0

我们有一个非常简单的设置,NGINX坐在提供内容的前端和后端服务器上(在单独的物理服务器上)。禁用NGINX缓存304来自原始服务器的响应

然后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头回来 - 伟大的。

但是我们注意到,NGINX会缓存这个304响应,并且即使没有If-Modified-Since标头,也会将未来响应作为304传递给客户端。

我们如何禁用缓存304响应并解决此问题?

感谢您提前给予的帮助,建议和提示。

回答

0

你应该替换与

proxy_cache_revalidate on 

,因为它是Nginx的文档中表示

proxy_cache_revalidate指示NGINX刷新从源服务器内容时使用条件GET请求。如果客户端请求缓存控制标头定义的缓存但过期的项目,NGINX将GET请求的头部中的If-Modified-Since字段包含在原始服务器中。这节省了带宽,因为服务器只有在自NGINX最初缓存它时附加到文件的Last-Modified标头中记录的时间以来修改完整项目时才发送完整项目。

相关问题