我正在为我的应用程序使用 Nginx 缓存。我想绕过一个非常具体的请求字符串的缓存。我以为我可以使用以下内容来实现这一目标:
location / {
if($uri ~ .*(ServerCheck).*) {set $nocache 1; }
proxy_pass http://127.0.0.1:9001/;
proxy_no_cache $nocache;
proxy_cache_bypass $nocache;
proxy_cache crownstudent;
proxy_cache_valid 200 1y;
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
}
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用。有什么办法可以让我做到这一点吗?Nginx 文档非常不清楚并且缺乏示例。
谢谢!
$uri保存一个规范化的url,它可以被任何其他指令或重定向修改。如果您的 nginx 配置变得越来越长,事情会变得更加复杂。我更喜欢$request_uri(根据 nginx 文档:带参数的完整原始请求 URI)。
尝试用这个替换你的条件:
if($request_uri ~ ServerCheck) {set $nocache 1; }
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您不需要捕获目标字符串ServerCheck,因为 nginx 只是测试正则表达式。
此外,您可能希望确保该请求已由代理回复。我使用 add_header 指令来完成这项工作。如:
add_header X-Proxy-Cache $upstream_cache_status;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4410 次 |
最近记录: |