1.場(chǎng)景:使用proxy_cache緩存web靜態(tài)內(nèi)容文件和通過rewrite偽靜態(tài)化后的html整頁(yè)面緩存,。 動(dòng)態(tài)內(nèi)容通過Ajax動(dòng)態(tài)獲取,也保持內(nèi)容一致,。
2.nginx 配置 a.添加緩存文件保存路徑
vi /etc/nginx/nginx.conf #注:proxy_temp_path和proxy_cache_path指定的路徑必須在同一分區(qū) proxy_temp_path /cache/proxy_temp_path;
#設(shè)置Web緩存區(qū)名稱為cache_one,,內(nèi)存緩存空間大小為200MB,1天沒有被訪問的內(nèi)容自動(dòng)清除,,硬盤緩存空間大小為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)$ {
#如果后端的服務(wù)器返回502、504,、執(zhí)行超時(shí)等錯(cuò)誤,,自動(dòng)將請(qǐng)求轉(zhuǎn)發(fā)到upstream負(fù)載均衡池中的另一臺(tái)服務(wù)器,實(shí)現(xiàn)故障轉(zhuǎn)移,。 proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache cache_one; #進(jìn)行緩存,,使用Web緩存區(qū)cache_one
proxy_cache_valid 200 304 5m; #對(duì)不同的HTTP狀態(tài)碼設(shè)置不同的緩存時(shí)間
proxy_cache_valid 301 302 1m; proxy_cache_valid any 1m; proxy_cache_key $host$uri$is_args$args; #以域名、URI,、參數(shù)組合成Web緩存的Key值,,Nginx根據(jù)Key值哈希,存儲(chǔ)緩存內(nèi)容到二級(jí)緩存目錄內(nèi) 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"; #設(shè)定proxy_set_header Accept-Encoding '';(或是后臺(tái)服務(wù)器關(guān)閉gzip),,這樣這臺(tái)機(jī)器才不會(huì)緩存被壓縮的文件,,造成亂碼 #proxy_set_header Accept-Encoding ""; 這個(gè)也可
proxy_ignore_headers "Cache-Control" "Expires"; #這段配置加上后,,proxy_cache就能支持后臺(tái)設(shè)定的expires。
if ( !-e $request_filename )
{ proxy_pass http://emulsites; }
expires 30m;
}
#php文件請(qǐng)求轉(zhuǎn)發(fā)給后端 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
訪問頁(yè)面,,查看緩存目錄是否生成緩存文件
|