使用nginx作为caching代理,不需要客户端的条件获取

我想Nginx被设置为一个反向代理caching在另一个Web服务器(原始服务器)之前。 我知道如何做到这一点。

但是,如果我不想依靠Web浏览器发送HTTP条件获取来利用caching呢? 相反,我想Nginx做一个HTTP条件获取到原始服务器。 如果Nginx具有陈旧的内容,它将使用来自原始服务器的新副本更新其caching。

stream程将如下所示:

  1. 浏览器(或其他非浏览器客户端)向Nginx发送HTTP GET请求。 (没有条件获取标题)。
  2. Nginx发送请求的内容到源服务器的HTTP GET,包括一个条件获取头(例如“If-Modified-Since”)。
  3. 如果内容已被修改,原始服务器将响应HTTP 200以及Nginx用来更新其caching的内容。 否则,它会响应HTTP 304“未修改”,Nginx不更新其caching。
  4. Nginx响应HTTP 200和请求的内容给浏览器。

原理是减less来自浏览器的不使用条件获取的HTTP请求的源服务器上的负载。

nginx在开发版本1.5.7中增加了这个新function。

添加proxy_cache_revalidate on; 到您的代理cachingconfiguration,nginx将使用If-Modified-Since重新validation陈旧的内容。