Nginx add_header 和缓存控制
Posted
技术标签:
【中文标题】Nginx add_header 和缓存控制【英文标题】:Nginx add_header and cache control 【发布时间】:2013-09-30 21:45:00 【问题描述】:当您在 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 秒的过期时间。
【问题讨论】:
【参考方案1】: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如何使用指令。
【讨论】:
【参考方案2】:如果您想完全丢弃原始服务器标头,您可以添加:
proxy_hide_header 'Cache-Control';
add_header 'Cache-Control' "public, max-age=10";
这将剥离原始标题并添加您自己的标题。
【讨论】:
如果你只想在 NGINX 中硬编码Cache-Control
标头而不关心上游服务器的响应标头 - 这似乎是最简单的解决方案。以上是关于Nginx add_header 和缓存控制的主要内容,如果未能解决你的问题,请参考以下文章