我希望将 Nginx 设置为反向代理,并在另一台 Web 服务器(原始服务器)之前进行缓存。我知道如何做到这一点。
但是,如果我不想依赖 Web 浏览器发送 HTTP 条件获取来利用缓存,该怎么办?相反,我希望 Nginx 对源服务器进行 HTTP 条件获取。如果 Nginx 有过时的内容,它将使用来自源服务器的新副本更新其缓存。
流程如下:
- 浏览器(或其他非浏览器客户端)向 Nginx 发送 HTTP GET 请求。(没有条件获取标头)。
- Nginx 将请求内容的 HTTP GET 发送到原始服务器,包括条件获取标头(例如“If-Modified-Since”)。
- 如果内容已被修改,源服务器将响应 HTTP 200 以及 Nginx 用于更新其缓存的内容。否则,它将响应 HTTP 304“未修改”,并且 Nginx 不会更新其缓存。
- Nginx 向浏览器响应 HTTP 200 和请求的内容。
其基本原理是为了减少来自浏览器的不使用条件获取的 HTTP 请求对原始服务器的负载。
答案1
nginx 在开发版本 1.5.7 中将其作为新功能添加。
添加proxy_cache_revalidate on;
到您的代理缓存配置,nginx 将使用 重新验证陈旧内容If-Modified-Since
。