nginx不在条件GET上从原始服务器返回更新的头文件

除了一个小问题,我还有nginx和它的caching工作。 当第一次发出请求时,它会触发原始服务器,返回一个200和nginxcaching的响应。 如果我提出另一个请求,我可以从X-Cache-Status头看到caching已经被命中。 当我等待一段时间知道caching将过期时,我可以看到nginx命中我的原始服务器做一个条件的GET,因为我有proxy_cache_revalidate on; 定义。

当我检查源服务器上的应用程序中的资源是否发生变化时,我发现它没有,并返回一个带有新的Expires标题的304。 有些人可能会说,如果原始服务器没有任何变化,并且你返回304,你为什么要返回一个新的Expires头文件。答案是HTTP RFC说可以这样做https://tools.ietf.org/html/ rfc7234#部分-4.3.4

有一件事我注意到了,无论我添加或修改什么标题,当源服务器返回304时,nginx都会给出一个响应,并为它提供第一组响应头。

另外,如果我从第一个请求更改Cache-Control:max-age标头值,当我返回304响应时,它似乎nginx服从新值,因为我的资源被caching的那个时候,但响应头值是给定的在第一个请求不是我修改的304响应的价值。

我正在运行nginx version: nginx/1.10.1