1. 程式人生 > >Nginx反向代理和快取服務和手動清除快取模組purge的配置

Nginx反向代理和快取服務和手動清除快取模組purge的配置


proxy_set_header :將客戶端的資訊傳送給後端伺服器,客戶端的IP、host等資訊傳給後端伺服器,否則後端伺服器獲取到的將只是反代伺服器的資訊
proxy_pass:指定後端伺服器地址,可以為具體的域名網址,也可以為upstream指定的伺服器群集名稱
proxy_cache:指定需要使用的快取池,當然在使用之前必須使用proxy_cache_path定義一個快取池
proxy_temp_paht:不知道幹什麼用的,只知道配置的路徑要跟proxy_cache_path在同一個分割槽
proxy_cache_path:設定快取檔案存放的路徑,proxy_cache_path path levels=1:2 keys_zone=zone_name:500m inactive=100d max_size=100g;
proxy_cache_min_uses:
proxy_cache_valid:設定對不同返回狀態碼的URL設定不同的快取時間
proxy_cache_key:設定對快取檔案儲存的檔名
proxy_cache_purge:設定對某個快取的手動清除(非nginx自帶模組,需手動安裝配置)




安裝nginx的時候已經安裝了purge模組,如果第一次編譯nginx的時候沒有裝purge模組,則需要重新編譯,(記得將conf/nginx.conf及sbin/nginx先備份下,以防萬一),重新編譯好後不要執行make install,以防破壞現有的工作內容!!




以下是反代+快取的例項程式碼並逐行解釋
http{


..........


proxy_temp_path  /www/proxy_image/proxy_temp_path;
proxy_cache_path /www/proxy_image/proxy_cache_path levels=1:2 keys_zone=image_cache:500m inactive=100d max_size=10g;


..............




server{


        listen 80;
        server_name image.test.com;    //設定客戶端訪問的主機頭為http://image.test.com


        location /  
        {
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $remote_addr;              //設定將客戶端資訊傳送至後端伺服器
                proxy_pass http://image_r.test.com;                      //指定後端伺服器為http://image_r.test.com (由於後端伺服器只有一臺,故未使用upstream)
        }


        location ~ /purge(/.*)              //配置purge模組用於手動清除快取


        {
                allow 192.168.40.4;        //配置允許執行purge的IP地址,未被允許的地址執行purge則將跳轉403頁面,也可以設定一個IP段如192.168.1.1/24
                deny all;
                proxy_cache_purge image_cache $host$1$is_args$args;        //配置清除image_cache這個快取池中的快取資料,$1匹配purge後的url欄位,其餘部分與proxy_cache_key所設定的相一致


        }




        location ~ .*\.(gif|jpg|png|bmp|swf)$      //配置對特殊檔案的處理


        {
                proxy_cache image_cache;          //配置對特殊檔案使用快取池image_cache
                proxy_cache_valid 200 304 12h;            //配置對幾個特殊狀態碼的快取時間,未定義的狀態碼全部只快取1分鐘
                proxy_cache_valid 301 302 1m;
                proxy_cache_valid any 1m;
                proxy_cache_key $host$uri$is_args$args;        //配置快取檔案儲存時的檔名,這個必須要與proxy_cache_purge模組搭配
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $remote_addr;        //設定將客戶端資訊傳送至後端伺服器
                proxy_pass http://image_r.test.com;              //配置後端伺服器


        }


  }


...............


}




注意點:


1、一個server段內可以有N個location。但是!每個檔案訪問對location的匹配是有先後順序的!只要一旦匹配成功就馬上終止對其他location的匹配。所以在對不同檔案做不同的location處理的時候要搞清楚順序。以下是各種location的匹配順序:
(location =) > (location 完整路徑 >) >(location ^~ 路徑) >(location ~* 正則) >(location 路徑)
在本例中,之前將purge那段location放於最後面,導致測試清除快取的時候出現404頁面,原因是訪問的http://image.test.com/purge/*.*時先被 location ~ .*\.(gif|jpg|png|bmp|swf)$ 所匹配,而導致出現404頁面。