NEIL's_學而時習之x不學無術~私藏IT技術經驗分享部落

關於部落格
NEIL. Cheng....寫作只是為了日後工作之備忘操作參考

本部落格文章撰寫前進邁向第五年(since 2009 ~至今)仍繼續推進分享IT學習!!About Windows/Linux Server,Virtualization


分享網誌: 由於,本人預先完成LAB後,才補上撰寫文章與截圖,若發現文圖對照說明有誤..本人將盡快校正,也請不吝指教! Thanks!

  • 153344

    累積人氣

  • 44

    今日人氣

    0

    訂閱人氣

Nginx Reverse Proxy Plus 添加 Cache(快取機制)加速網站回應 by Neil

< 實作開始>

編輯"proxy2.conf"  配置組態設定如下#關於實際Proxy Cache 環境與基本參數配置組態定義

proxy_temp_path  /data/proxy_temp;  
 
proxy_cache_path /data/proxy_cache levels=1:2

keys_zone=cache_one
:200m
 
inactive=1d max_size=10G;

配置說明:

指定  
proxy_temp_path , proxy_cache_path 目錄對應(此二配置目錄不可跨分割區)

key_zone=chache_one:200m 快取名稱定義,使用記憶體快取占用200m

inactive=1d   快取有效時間定義超過此值將自動刪除快取資料,1d = 24hour

max_size=10G  配置硬碟快取空間大小10G


 
編輯"proxy3.conf"  配置組態設定如下 #關於實際Proxy Cache 條例配置相關組態

vi proxy3.conf   #將此定義在Server { .....省略...} 宣告式之最下方


Purge 配置順序必須優先於...Cache物件設定,顛倒配置Purge無法順利執行


location ~ /purge(/.*)    #定義手動清除快取成員127.0.0.1,192.168.11.0/24 兩網段allow Purge
                                   
                                    #proxy_cache_purge : 配置web 快取key值

{
allow 127.0.0.1;
allow 192.168.11.0/24;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}

location ~* .(html|htm|jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$
{
        proxy_buffering on;
        proxy_cache cache_one;
        proxy_cache_valid 200 304 12h;
        proxy_cache_valid 301 302 1m;
        proxy_cache_valid any 1m;
        proxy_cache_key $host$uri$is_args$args;
        proxy_set_header Host $Host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://lvs_web_site_pool;
        }

說明宣告需要快取靜態物件類型: 

html|htm|jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx


針對狀態回應code 快取配置


  proxy_cache_valid         200 304 12h;   #有效快取存活時間12hour
  proxy_cache_valid         301 302 1m;    #有效快取存活時間1minute
  proxy_cache_valid         any 1m;

範例說明

200 OK 請求已成功,請求所希望的響應頭或資料體將隨此響應返回。
301 Moved Permanently: 301 轉址Redirect網址自動導向其他網頁(SEO常見手法)

 proxy_set_header Host $Host;
 proxy_set_header X-Forwarded-For $remote_addr;
 proxy_pass http://lvs_web_site_pool;     #Cache整合反向代理配置相關組態


Final[驗收快取測試]

使用192.168.11.200 客戶端瀏覽器(Win7): 瀏覽http://proxy204.neil0918u.com 網頁

分享一下先前舊篇配置好的Cent201(後端真實WEB)虛擬主機配置

<VirtualHost 192.168.11.201:80>
ServerAdmin near@outlook.com
DocumentRoot /rsync
ServerName proxy204.neil0918u.com
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 192.168.11.201 192.168.11.204
RPAFheader X-Forwarded-For
ErrorLog  pink13.example.com-error_log
CustomLog pink13.example.com-access_log common
</VirtualHost>

RPAFenable 必須安裝在Apache 上並宣告配置參數在虛擬主機內才可與前方Nginx Proxy溝通 

為測試Cache 我簡易在網頁上添加"JPG"跟"PNG" 圖檔 刻意用於測試網頁快取機制

插入PIC1 : 還珠格格的爾康: 關於長年潛水與深度之間議題探討!?

插入PIC2 : 終極一班3: 東成衛團長"脩" 開導汪大東因感情困擾之狀況劇



插入PIC3 : 杰哥不要!? ==|||不知道為何不少人常引用"杰哥"不要金句而在FB造成瘋狂引用轉載


OK 瀏覽此網頁後回到Cent204(Nginx Reverse Proxy) 的 Proxy_Cache_path 路徑指定底下瞧

看是否真的Cache到圖片物件!!?  #下圖中看到 0 1  7 表示已有被Cache 物件



最後我們手動清除Cache物件使用Purge 測試

瀏覽器輸入: http://proxy204.neil0918u.com/purge/物件名稱.副檔名

例如:我要刪除杰哥快取資料杰哥圖片: yum.jpg

 http://proxy204.neil0918u.com/purge/yui.jpg    #就會出現該Cache資料已經被清除資訊

Key : proxy204.neil0918u.com/yui.jpg 

Path: /data/proxy_cache/7/c4/75cb089197a54cd779af0a9960e56c47




補充 proxy3.conf  Cache 不緩存php動態語言: .php、.jsp、.cgi 結尾


location ~ .*.(php|jsp|cgi)?$
    {
         proxy_set_header Host  $host;
         proxy_set_header X-Forwarded-For  $remote_addr;
         proxy_pass http://backend_server;
    }



結論: 

Nginx Reverse Proxy 支援多台後端WebSite之間負載平衡(upstream)非常不錯

在本Lab 為此 Proxy 增加快取機制,一方面可節省伺服器端回應Client端時間另一方面減輕

後端伺服器處理壓力. Great 

 

實務操作參考: 張宴先生網站: 
http://www.s135.com/
相簿設定
標籤設定
相簿狀態