是否可以让 Nginx 缓存所有301
重定向请求proxy_pass
?
例如:
请求 #1:客户端 A 请求 /some/path -> 发送到proxy_pass
-> 结果 301 重定向到/some/other/path
-> nginx 缓存此响应,因为它是 301 重定向。
请求 #2:客户端 B 请求 /some/path -> nginx 返回缓存的 301 重定向到/some/other/path
.
是否可以让 Nginx 缓存所有301
重定向请求proxy_pass
?
例如:
请求 #1:客户端 A 请求 /some/path -> 发送到proxy_pass
-> 结果 301 重定向到/some/other/path
-> nginx 缓存此响应,因为它是 301 重定向。
请求 #2:客户端 B 请求 /some/path -> nginx 返回缓存的 301 重定向到/some/other/path
.
nginx 已经可以缓存 301 重定向。您可以使用proxy_cache_valid指令更改它们的缓存时间:
我发现@Michael 的回答让我完成了大部分工作,但是当我打开时
proxy_cache
,它会自动缓存带有Expires
和的文件Cache-Control
。所以我最终得到了这个解决方案。如果你想重定向所有,你可以使用这种方式:
您的示例可能需要 和 的
rewrite
组合proxy_pass
:警告:你有不同的重写
redirect
效果:break
返回 301 而不是permanent
返回 302。编辑 此模块的上游,您需要使用
proxy_cache_valid
指令:警告,上游缓存相关指令优先于 proxy_cache_valid 值,特别是顺序是:
参考:HttpProxyModule、Nginx反向代理+URL重写