我正在尝试将所有 js|css 包含在 nginx 位置中(特定目录除外)
目前我有这个
location ~* \.(js|css)$ {
expires 7h;
add_header Cache-Control "public";
}
我有一些 js 文件,/javascriptfoldertwo/
我想让它在 2 小时后过期。
有人可以帮忙吗?
提前致谢
答案1
欢迎来到 ServerFault @leon。
虽然 @Tero 的答案应该可行,但还有另一种方法。这种方法利用嵌套位置在 Nginx 中。以下是实际的代码...
location ~* \.(js|css)$ {
expires 7h;
add_header Cache-Control "public";
location ~ /javascriptfoldertwo/ { expires 2h; }
}
location
您可能详细了解https://nginx.org/r/location。请搜索文字“嵌套”以了解更多信息以及使用嵌套location
块的限制。
这种方法的明显优势是...您不必在意执行顺序。例如,下面的方法也有效...
location ~* \.(js|css)$ {
location ~ /javascriptfoldertwo/ { expires 2h; }
expires 7h;
add_header Cache-Control "public";
}
答案2
nginx 使用符合条件的第一个正则表达式位置。因此,您可以进行以下设置:
location ~* ^/javascriptfoldertwo/ {
expires 2h;
add_header Cache-Control "public";
}
location ~* \.(?:js|css)$ {
expires 7h;
add_header Cache-Control "public";
}