如何设置 Nginx 忽略 Pragma: no-cache

如何设置 Nginx 忽略 Pragma: no-cache

我正在设置一个 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 标头并绕过缓存,请将此行添加到您的配置中。

相关内容