一、配置nginx的虛擬主機
虛擬主機技術主要應用於HTTP(Hypertext Transfer Protocol,超文本傳輸協議)服務,提供了在同一臺服務器、同一組Nginx進程上運行多個網站的功能。
1、編輯nginx的配置文件,生成虛擬主機:
125
126 server {
127 listen 80;
128 server_name www.westos.org;
129
130 location / {
131 root /www1;
132 index index.html;
133 }
134 }
135 server {
136 listen 80;
137 server_name bbs.westos.org;
138
139 location / {
140 root /www2;
141 index index.html;
142 }
143 }
144 }
建立/www1和/www2,並且編寫index.html
[root@server1 conf]# mkdir /www1
[root@server1 conf]# mkdir /www2
[root@server1 conf]# cd /www1/
[root@server1 www1]# vim index.html
<h1>www.westos.org</h1>
[root@server1 conf]# cd /www2/
[root@server1 www2]# vim index.html
<h1>bbs.westos.org</h1>
在物理主機中測試
首先加解析:
[root@foundation66 kiosk]# vim /etc/hosts
測試:
二、實現https加密
1、編輯nginx的配置文件
107 server {
108 listen 443 ssl;
109 server_name www.westos.org; #訪問www.westos.org
110
111 ssl_certificate cert.pem; #https認證的鎖和鑰匙
112 ssl_certificate_key cert.pem;
113
114 ssl_session_cache shared:SSL:1m;
115 ssl_session_timeout 5m;
116
117 ssl_ciphers HIGH:!aNULL:!MD5;
118 ssl_prefer_server_ciphers on;
119
120 location / {
121 root /www1; #訪問本地/www1的index.html文件
122 index index.html index.htm;
123 }
124 }
[root@server1 conf]# nginx -t #檢測語法
[root@server1 conf]# nginx -s reload #重新加載 nginx服務
2、測試訪問:https://www.westos.org
這個出現說明:你的網站存在問題,是繼續還是返回。可以點擊Advanced,修改安全證書
再次訪問:
三、重定向
1、訪問www.westos.org時調轉到https://www.westos.org
nginx配置文件的修改
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org;
129 rewrite ^/(.*)$ https://www.westos.org; #當在這行後面加入permanent,訪問時就會出現301 Moved Permanently永久重定向
130
131 location / { #也可以把這個location註釋調,因爲在配置文件http服務那塊已經寫過,當這裏調用location本地時,可以直接調用http服務的location
132 root /www1;
133 index index.html;
134 }
135 }
[root@server1 conf]# nginx -s reload
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org;
129 rewrite ^/(.*)$ https://www.westos.org/$1 permanent; #可以訪問www.westos.org的下級目錄
130
[root@server1 conf]# nginx -s reload
2、將westos.org重定向到www.westos.org
(1)修改配置文件
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org westos.org;
129 rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
130
[root@server1 conf]# nginx -s reload
(2)在物理主機中加入本地解析
[root@foundation66 kiosk]# vim /etc/hosts
(3)測試
3、訪問~/bbs時重定向到https://bbs.westos.org
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org westos.org;
129 rewrite ^/bbs$ http://bbs.westos.org; #訪問以bbs結尾的網址時跳轉到http://bbs.westos.org
130 #rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
131
[root@server1 conf]# nginx -s reload
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org westos.org;
129 rewrite ^/bbs$ http://bbs.westos.org;
130 rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1; #可以訪問以bbs的下級目錄結尾的網址
131
[root@server1 conf]# nginx -s reload
4、反向重定向bbs.westos.org—> https://www.westos.org/bbs/
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org westos.org;
129 #rewrite ^/bbs$ http://bbs.westos.org;
130 #rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1;
131 #rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
132
133 location / {
134 root /www1;
135 index index.html;
136 }
137 }
138 server {
139 listen 80;
140 server_name bbs.westos.org;
141 rewrite ^(.*)$ http://www.westos.org/bbs$1;
142 # location / {
143 # root /www2;
144 # index index.html;
145 # }
146 }
147 }
[root@server1 conf]# nginx -s reload
四、防止惡意
1、返回500報錯
修改配置文件
[root@server1 conf]# vim nginx.conf
40 server {
41 listen 80;
42 server_name _; #當所有主機到達訪問默認頁面,返回500報錯
43 return 500;
44
[root@server1 conf]# nginx -s reload
(2)跳轉到指定站點
[root@server1 conf]# vim nginx.conf
40 server {
41 listen 80;
42 server_name _;
43 #return 500;
44 rewrite ^(.*) http://www.westos.org; #所有主機到達時,重定向到指定站點
45 #charset koi8-r;
[root@server1 conf]# nginx -s reload
五、訪問控制
[root@server1 conf]# vim nginx.conf
127 server {
128 listen 80;
129 server_name www.westos.org westos.org;
130 #rewrite ^/bbs$ http://bbs.westos.org;
131 #rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1;
132 #rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
133
134 location / {
135 root /www1;
136 index index.html;
137 allow 172.25.66.250; #只允許物理主機訪問,不允許其他主機訪問
138 deny all;
139 }
140 }
[root@server1 conf]# nginx -s reload
測試:curl -I www.westos.org
拒絕客戶端上傳照片
首先新建一個images目錄,
[root@server1 ~]# cd /www1
[root@server1 www1]# mkdir images
[root@server1 conf]# vim nginx.conf #編輯配置文件,/usr/local/lamp/nginx/conf
127 server {
128 listen 80;
129 server_name www.westos.org westos.org;
130 #rewrite ^/bbs$ http://bbs.westos.org;
131 #rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1;
132 #rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
133
134 location / {
135 root /www1;
136 index index.html;
137 allow 172.25.66.250;
138 deny all;
139 }
140 location ~ ^/images/.*\.(jpg|gif)$ { #訪問本地/images目錄下以(jpg/gif)結尾的照片
141 deny all; #拒絕所有客戶端上傳照片
142 }
[root@server1 conf]# nginx -t #檢測語法
[root@server1 conf]# nginx -s reload #重新加載服務
六、對客戶端併發量,下載速度的限制
1、限制客戶端請求的併發量
[root@server1 nginx]# cd /www1
[root@server1 www1]# mkdir download
[root@server1 www1]# cd images
[root@server1 images]# cp vim.jpg ../download
[root@server1 nginx]# vim conf/nginx.conf
38 #gzip on;
39 limit_conn_zone $binary_remote_addr zone=addr:10m; #限制帶寬
127 server {
140 location ~ ^/images/.*\.(jpg|gif)$ {
141 deny all;
142 }
143 location /download/ {
144 root /www1;
145 limit_conn addr 1; #併發量爲1
146 }
147 }
[root@server1 nginx]# nginx -t
[root@server1 nginx]# nginx -s reload
在物理主機中做壓力測試
[root@foundation66 kiosk]# ab -c1 -n 10 http://www.westos.org/download/vim.jpg
[root@foundation66 kiosk]# ab -c10 -n 10 http://www.westos.org/download/vim.jpg
2、限制客戶端下載速率
[root@server1 nginx]# vim conf/nginx.conf
38 #gzip on;
39 limit_conn_zone $binary_remote_addr zone=addr:10m;
40 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; #限制下載速率
41
129 server {
142 location ~ ^/images/.*\.(jpg|gif)$ {
143 deny all;
144 }
145 location /download/ {
146 root /www1;
147 limit_conn addr 1;
148 limit_req zone=one burst=5;
149 limit_rate 50k; #限制速率爲50k
150 }
151 }
[root@server1 nginx]# nginx -t
[root@server1 nginx]# nginx -s reload
七、去掉不必要的日誌記錄
[root@server1 nginx]# vim conf/nginx.conf
access_log off;
八、防盜鏈機制
在server6的apache默認發佈文件下編輯index.html文件
[root@server6 ~]# yum install -y httpd
[root@server6 ~]# /etc/init.d/httpd start
[root@server6 ~]# cd /var/www/html/
[root@server6 html]# vim index.html
<html>
<body>
<br>圖片</br>
<img src="http://www.westos.org/images/vim.jpg">
</body>
</html>
在物理主機中加入本地解析(因此我們可以根據這種方式盜取server6上方 圖片信息,這樣就屬於盜鏈行爲)
[root@foundation66 kiosk]# vim /etc/hosts
172.25.66.6 daolian.westos.org
我們可以在server1的nginx配置文件中加入防盜鏈的行:讓圖片顯示不出來
[root@server1 nginx]# vim conf/nginx.conf
144 location ~ ^/images/.*\.(jpg|gif)$ {
145 expires 30;
146 root /www1;
147 valid_referers none blocked www.westos.org;
148 if ($invalid_referer) {
149 return 403;
150 }
[root@server1 nginx]# nginx -s reload
我們還可以重定向,當訪問daolian.westos.org時,重定向到/www2
[root@server1 nginx]# vim conf/nginx.conf
137 location / {
138 root /www1;
139 index index.html;
140
141 allow 172.25.66.250;
142 deny all;
143 }
144 location ~ ^/images/.*\.(jpg|gif)$ {
145 expires 30;
146 root /www1;
147 valid_referers none blocked www.westos.org;
148 if ($invalid_referer) {
149 # return 403;
150 rewrite ^/ http://bbs.westos.org/daolian.jpg; #當訪問/images目錄下的圖片時,重定向到bbs.westos.org/下面
151 }
152 }
159 }
160 server {
161 listen 80;
162 server_name bbs.westos.org;
163 #rewrite ^(.*)$ http://www.westos.org/bbs$1;
164 location / {
165 root /www2;
166 index index.html;
167 }
168 }
169 }
[root@server1 nginx]# nginx -s reload