nginx 从上游删除标头

nginx 从上游删除标头

我有带上游的 nginx。

上游设置标头:

Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache

因为我想要这个页面被缓存,所以在 nginx 中我有以下配置:

    location ~* ^.+\.(html)$ {
            proxy_pass      http://websitefarm.php73;

            add_header      Pragma          "";
            add_header      x-pragma        "OK";
            expires         1d;
    }

它成功删除了 Expires 和 Cache-Control,但 Pragma 仍然存在。

注意我的测试头“x-pragma”已设置。因此 conf 肯定“有效”

expires: Sat, 25 Jul 2020 12:13:04 GMT
cache-control: max-age=86400
pragma: no-cache
x-pragma: OK

如果我尝试将“Pragma”设置为其他内容,它会起作用,但“”似乎不起作用。

答案1

似乎只能使用proxy_hide_header指令才能删除

以下配置有效:

    location ~* ^.+\.(html)$ {
            proxy_pass              http://websitefarm.php73;
            proxy_hide_header       Pragma;
            expires                 1d;
    }

答案2

这是 PHP 配置问题。您已设置session.cache_limiternocache,可以保留其默认值,也可以在代码中明确设置,或者两者兼而有之。

如果感兴趣的页面确实是可缓存的,并且不适用于登录用户,那么您需要与应用程序的开发人员讨论会话的不当使用。

相关内容