Nginx add_header和缓存控制

时间:2013-09-25 10:35:12

标签: caching nginx reverse-proxy cache-control

在nginx中使用add_header指令时,标题会添加到来自原始服务器的响应中。

假设源服务器返回cache-control public,max-age = 60。但是在nginx反向代理位置,您可以设置如下内容:

add_header cache-control public,max-age = 10

这究竟是做什么的?我可以想到两种不同的场景:

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

或..

2)Nginx首先覆盖响应头,然后解释它们。它存储的资源的有效期为10秒,并将响应传递给客户端,客户端也会以10秒的有效时间对其进行缓存。

2 个答案:

答案 0 :(得分:7)

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来替换或清除源文件中的标题。

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

答案 1 :(得分:3)

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

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

这将删除原始标题并添加您自己的标题。