反向代理(Reverse Proxy)方式是經過代理服務器來接受Internet上的鏈接請求,而後將請求轉發給內部真實服務器,而且將內部服務器上獲得的結果返回給Internet上的客戶端。web
優勢:後端
一、減小後端web服務器的壓力,提升響應速度安全
二、由於未保存任何網頁的數據,增長了web服務器的安全bash
1、多域名跳轉實例
服務器
例如:一個網站有兩個域名,分別是www.a.com和www.b.com
ide
實現:網站
1.當用戶訪問域名www.a.com,時將請求經過Nginx代理到192.168.1.10的8080端口的web目錄下。
搜索引擎
2.當管理員訪問http://www.a.com/admin時,將請求代理到192.168.1.10的8080端口的/admin目錄下。
url
3.當用戶訪問www.b.com域名時,將請求代理到192.168.1.10的8080端口的/wap目錄下。spa
這裏重點說明反向代理的設置:
server www.a.com location / { proxy_pass http://192.168.1.10:8080 /web/ } location /admin { proxy_pass http://192.168.1.10:8080 /admin } server www.b.com location / { proxy_pass http://192.168.1.10:8080 /wap/ } 提示:經過proxy_pass配置兩個代理目錄web和wap後面必須加上斜槓。不然會報錯!
2、經過Nginx重定向實現新舊域名過渡
在web應用中,咱們須要網頁重定向的狀況。例如網頁目錄結構變更,網頁的擴展名改變,網站域名的改變,網頁重命名等。由於要將網站舊域名用新的域名進行替換,不可避免的丟失搜索引擎的流量。舊的域名也須要在一段時間內可以訪問,而且要實如今用舊域名訪問網站的時候,自動將訪問的請求轉到新的域名。這個時候咱們就須要新舊域名的過渡。
在Nginx的域名過渡方法有兩種:
例如:假設www.a.com爲舊域名,而www.b.com爲新域名。要實現經過www.a.com訪問的url都自動轉向www.b.com對應的url路徑下面。
方法一: server { server_name www.a.com; rewrite ^/(.*)$ http://www.a.com/$1 permanent; } 提示:這裏我僅僅列車Nginx配置文件的server配置段。這個配置中使用了Nginx的重定向功能,經過 rewrite模塊的permanent參數實現永久重定向的http狀態301.
方法二: 經過判斷Nginx的核心變量host實現重定向功能: server { server_name www.a.com www.b.com; if ($host != 'www.a.com' ) { rewrite ^/(.*)$ http://www.a.com/$1 permanent; } } 提示:這個方式是經過Nginx的核心變量host進行判斷,而後經過rewrite模塊的重定向實現轉向。
3、Nginx中目錄權限控制,IP訪問控制,文件訪問權限控制實現
1.實現與Apache同樣的目錄列表:
location / { autoindex on; }
2.實現ip控制,用ngx_http_access_module模塊,這個模塊能夠限制某些ip地址的客戶端訪問:
location / { deny 192.168.1.66.80; allow 192.168.66.0/24;allow 192.16.88.0/16;deny all; }
提示:這些規則中,Nginx是按照順序依次進行規則檢測的,直到匹配到一條規則,而後退出。
3.要禁止訪問某個目錄,配置以下:
location ~ ^/(WEB-INF)/ { deny all; }
4.要禁止訪問*.txt、*.doc文件,配置以下:
location ~.* \.(txt|doc)${ root /data/www/wwwroot; deny all; }