Nginx 位置排除特定文件夹

Nginx 位置排除特定文件夹

我正在尝试将所有 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";
}

相关内容