Nginx 不会减少 max-age

Nie*_* B. 5 http nginx cache

我正在尝试将 Nginx 设置为在 Unicorn 上运行的 Rails 应用程序的反向代理。

我的应用程序有一些公共页面,我想将它们缓存 60 分钟,因此我设置了 max-age 标头。

此外,我已将 proxy_cache 选项添加到 Nginx 中的服务器块中。

proxy_cache default;
Run Code Online (Sandbox Code Playgroud)

并定义了这个缓存

proxy_cache_path /var/www/nginx_cache keys_zone=default:10m max_size=500m;
Run Code Online (Sandbox Code Playgroud)

我已设置我的应用程序以将此标头添加到我的可缓存响应中

Cache-Control: max-age=3600, public
Run Code Online (Sandbox Code Playgroud)

当客户端第一次访问该页面时,将呈现该页面并返回响应。然而,在随后的请求中,nginx 不会减少 max-age 计数器。

因此,访问者可能会在页面过期前一分钟访问我的页面,这意味着他看到的是 59 分钟前的内容。但随后将此副本在他的浏览器中再保留 60 分钟,然后他就会获得新副本。

我可以让 Nginx 减去经过的时间,这样如果访问者访问已在 Nginx 缓存中 25 分钟的页面,则 max-age 将为 35 分钟(2100 秒)?

小智 1

你的做法完全错误。

请阅读有关 Nginx 代理缓存的更多信息 http://nginx.org/en/docs/http/ngx_http_proxy_module.html

这也很有用: How to set up Nginx as a caching reverse proxy?