Nginx配置詳解

一、配置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

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章