Nginx高性能web服務器之反向代理(四)

     反向代理(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;
   }
相關文章
相關標籤/搜索