我们有一个非常简单的设置,NGINX位于前端,后端服务器(位于单独的物理服务器上)提供内容。
Nginx然后根据源服务器设置的EXPIRES和Cache-Control标头缓存内容。
我们注意到,当客户端发送If-Modified-Since标头时,NGINX没有向不在本地NGINX缓存中的图像发出304标头。相反,它会发出一个带有完整数据文件的200。
要解决此问题,我们已应用:
proxy_set_header If-Modified-Since $http_if_modified_since
然后将If-Modified-Since标头传递给后端,当然,它使用304标头正确返回 - 很棒。
但我们注意到,即使没有If-Modified-Since标头,NGINX也会缓存此304响应,并将未来的响应作为304传递给客户端。
我们如何禁用304响应的缓存并修复此问题?
提前感谢您的帮助,建议和提示。
答案 0 :(得分:0)
您应该用
替换它proxy_cache_revalidate on
,如Nginx文档中所示
proxy_cache_revalidate指示NGINX在从源服务器刷新内容时使用条件GET请求。如果客户端请求缓存但是由缓存控制头定义的过期项,则NGINX在其发送到源服务器的GET请求的头中包含If-Modified-Since字段。这样可以节省带宽,因为服务器只有在NGINX最初缓存它时附加到文件的Last-Modified标头中记录的时间后才会发送完整项目。