nginx web緩存配置

1.場景:使用proxy_cache緩存web靜態內容文件和經過rewrite僞靜態化後的html整頁面緩存。

動態內容經過Ajax動態獲取,也保持內容一致。php

###2.nginx 配置css

a.添加緩存文件保存路徑

vi /etc/nginx/nginx.conf
#注:proxy_temp_path和proxy_cache_path指定的路徑必須在同一分區
proxy_temp_path /cache/proxy_temp_path;
#設置Web緩存區名稱爲cache_one,內存緩存空間大小爲200MB,1天沒有被訪問的內容自動清除,硬盤緩存空間大小爲30GB。
proxy_cache_path /cach/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=5m max_size=30g;

b.添加緩存配置

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html)$
{
#若是後端的服務器返回50二、50四、執行超時等錯誤,自動將請求轉發到upstream負載均衡池中的另外一臺服務器,實現故障轉移。
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache cache_one;
#進行緩存,使用Web緩存區cache_one
proxy_cache_valid 200 304 5m;
#對不一樣的HTTP狀態碼設置不一樣的緩存時間
proxy_cache_valid 301 302 1m;
proxy_cache_valid any 1m;
proxy_cache_key $host$uri$is_args$args;
#以域名、URI、參數組合成Web緩存的Key值,Nginx根據Key值哈希,存儲緩存內容到二級緩存目錄內
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Accept-Encoding "none";
#設定proxy_set_header Accept-Encoding '';(或是後臺服務器關閉gzip),這樣這臺機器纔不會緩存被壓縮的文件,形成亂碼
#proxy_set_header Accept-Encoding ""; 這個也可
proxy_ignore_headers "Cache-Control" "Expires";
#這段配置加上後,proxy_cache就能支持後臺設定的expires。
if ( !-e $request_filename )
{
proxy_pass http://emulsites;
}
expires 30m;
}
#php文件請求轉發給後端
location ~ .*\.(php|cgi)?$
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://emulsites;
}

3.重載nginx

sudo service nginx reload

訪問頁面,查看緩存目錄是否生成緩存文件html

相關文章
相關標籤/搜索