【问题标题】:Nginx add_header and cache controlNginx add_header 和缓存控制
【发布时间】: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 秒的过期时间。

【问题讨论】:

    标签: caching nginx reverse-proxy cache-control


    【解决方案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 标头而不关心上游服务器的响应标头 - 这似乎是最简单的解决方案。
      猜你喜欢
      • 2013-01-13
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多