nginx cache不緩存問題的原因與解決方案
nginx.conf 部分內容:
proxy_temp_path /nginx/cache/temp; proxy_cache_path /nginx/cache/path levels=1:2 keys_zone=cache_test:2048m inactive=7d max_size=10g; ...... location ~ .(gif|jpg|jgep|png)$ { proxy_pass http://upstreams; proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; proxy_cache cache_test; #設置緩存的key proxy_cache_key $host$uri$is_args$args; #設置狀態(tài)碼為200和304的響應可以進行緩存,并且緩存時間為1天 proxy_cache_valid 200 304 1d; expires 30d; }
nginx不緩存原因
默認情況下,nginx是否緩存是由nginx緩存服務器與源服務器共同決定的, 緩存服務器需要嚴格遵守源服務器響應的header來決定是否緩存以及緩存的時常。
header主要有如下:
Cache-control:no-cache、no-store
如果出現(xiàn)這兩值,nginx緩存服務器是絕對不會緩存的
Expires:1980-01-01
如果出現(xiàn)日期比當前時間早,也不會緩存。
解決不緩存方案
2.1 方法一:
修改程序或者源服務器web程序響應的header
2.2 方法二:
nginx代理直接加上如下一句:
proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關文章
nginx報錯upstream sent invalid header的解決
本文主要介紹了nginx報錯upstream sent invalid header的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-12-12