我將 nginx 用于靜態檔案,并希望所有檔案都應由瀏覽器快取,而不是 index.html。嘗試了以下配置,但我也獲得了 index.html 的快取回應標頭。我該如何更改配置?
server{
location = / {
try_files $uri $uri/ =404;
}
location / {
try_files $uri $uri/ =404;
add_header 'Cache-Control' "public, max-age=3600";
}
}
uj5u.com熱心網友回復:
要了解try_files $uri $uri/ ...指令的邏輯(以及整個 nginx 行為),我建議您在 ServerFault 閱讀此答案。最重要的是
非常重要但絕對不明顯的事情是,
index正在使用的指令try_files $uri $uri/ =404可能會導致內部重定向。
這就是您當前的配置所發生的情況。該指令的$uri/引數導致 nginx 從totry_files進行內部重定向,然后該 URI 由 處理,而不是!為了實作你想要的,你可以使用//index.htmllocation / { ... }location = / { ... }
location = /index.html {
try_files $uri $uri/ =404;
}
location / {
try_files $uri $uri/ =404;
add_header 'Cache-Control' "public, max-age=3600";
}
此外,由于try_files $uri $uri/ =404;是默認的 nginx 行為,您可以進一步將其簡化為
location = /index.html {}
location / {
add_header 'Cache-Control' "public, max-age=3600";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/461678.html
上一篇:Nginx反向代理:使用1臺服務器代理2臺不同的服務器
下一篇:Nginx:將請求分派到多個端點
