我正在尝试将 Nginx 设置为在 Unicorn 上运行的 Rails 应用程序的反向代理。
我的应用程序有一些公共页面,我想缓存 60 分钟,所以我设置了 max-age 标头。
此外,我还将 proxy_cache 选项添加到 Nginx 中的服务器块。
proxy_cache default;
并定义了这个缓存
proxy_cache_path /var/www/nginx_cache keys_zone=default:10m max_size=500m;
我已经设置我的应用程序将此标头添加到我的可缓存响应中
Cache-Control: max-age=3600, public
当客户端第一次访问该页面时,页面会被渲染并返回响应。但是,在后续请求中,nginx 不会减少 max-age 计数器。
因此,访问者可能会在过期前一分钟访问我的页面,这意味着他看到的是 59 分钟前的内容。但他会将此副本保留在他的浏览器中 60 分钟,然后才会获得新副本。
我可以让 Nginx 减去过去的时间吗,这样,如果访问者访问了已在 Nginx 缓存中停留 25 分钟的页面,那么最大年龄将是 35 分钟(2100 秒)?
答案1
你的方法完全错误。
请阅读更多有关 Nginx 代理缓存的信息 http://nginx.org/en/docs/http/ngx_http_proxy_module.html
这也很有用: 如何将 Nginx 设置为缓存反向代理?