我正在设置一个 Nginx 服务器作为缓存代理服务器。
我注意到,当请求此标头时,缓存不起作用:
Pragma: no-cache
如果没有此标头,缓存仍可正常工作。
我可以让 Nginx 忽略来自客户端的这个标头字段并缓存结果吗?因为我无法轻松更改客户端代码(需要重新安装很多设备)。
答案1
您可以具体指示 nginx 忽略标头和:
proxy_ignore_headers X-Accel-Expires;
proxy_ignore_headers Expires;
proxy_ignore_headers Cache-Control;
通过这些指令,nginx 代理实例将忽略上游服务器发送的标头并为客户端设置自己的标头(取决于您在代理响应配置中指定的内容)。
答案2
汇总所有评论...
Nginx 默认不遵守pragma:no-cache
请求标头,因为它可能是 DoS 向量。但是,能够绕过缓存可能是您想要启用的一个有用功能。
从您的配置中删除此行将恢复为忽略 Pragma 标头并始终使用缓存的默认 nginx 配置。
proxy_cache_bypass $http_pragma;
如果您想遵守 Pragma 标头并绕过缓存,请将此行添加到您的配置中。