11

当您在 nginx 中使用 add_header 指令时,标头会添加到来自源服务器的响应中。

假设源服务器返回公共缓存控制,max-age=60。但是在 nginx 反向代理位置中,您可以设置如下内容:

add_header 缓存控制公共,max-age=10

这到底是做什么的?我能想到两种不同的场景:

1) Nginx 尊重来自源服务器的缓存控制标头,并将内容存储在其缓存中,有效期为 60 秒。然后使用覆盖的标头传递响应,导致客户端将资源存储在其缓存中,有效期为 10 秒。

或者..

2) Nginx 先覆盖响应头,然后再解释它们。它以 10 秒的过期时间存储资源,并将响应传递给客户端,客户端也将其缓存在 10 秒的过期时间。

4

2 回答 2

13

Nginx 在源服务器之前添加其标头,因此您将拥有:

cache-control: public, max-age=10
cache-control: public, max-age=60

并且 origin 标头将替换 nginx 标头。

解决方案?使用具有模块 more_set_headers 和 more_clear_headers 的 nginx v1.4.3 来替换或清除源中的标头。

您可以从这里下载该模块。
这里如何下载 nginx 1.4.3 以及如何安装它。
这里如何使用指令。

于 2013-12-11T18:39:59.070 回答
5

如果您想完全丢弃原始服务器标头,您可以添加:

proxy_hide_header 'Cache-Control';
add_header 'Cache-Control' "public, max-age=10";

这将剥离原始标题并添加您自己的标题。

于 2020-01-28T14:12:09.280 回答