Nginx 缓存时间过长

Nginx 缓存时间过长

我正在尝试将 Nginx 配置为 DarkSky 的简单缓存代理,以便能够保持在每天 1000 个的限制以下。但是,我遇到了一个问题,它似乎根本不遵守指令,proxy_cache_valid并且缓存的时间比指令的时间长得多。这是我的配置文件:

worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    proxy_cache_path /var/apicache keys_zone=apicache:10m max_size=1g inactive=120m use_temp_path=off;
    proxy_cache_valid any 1m;
    proxy_cache_background_update off;
    proxy_ignore_headers Cache-Control;

    server {
        listen       8765;
        listen       [::]:8765;
        server_name  darksky;

        location /api {
                    proxy_pass https://api.darksky.net/forecast/<myapikey>;
                    proxy_cache apicache;
        }
    }
}

我确信我做错了什么事,但我无论如何也想不出来是什么。nginx -t很高兴所以这不是语法问题。

来自 darksky 的响应标头如下所示:

HTTP/2.0 200 OK
date: Thu, 28 Mar 2019 23:06:50 GMT
content-type: application/json; charset=utf-8
x-authentication-time: 1ms
cache-control: max-age=3600
expires: Fri, 29 Mar 2019 00:06:50 +0000
x-forecast-api-calls: 104
x-content-type-options: nosniff
x-response-time: 37.548ms
vary: Accept-Encoding
content-encoding: gzip
X-Firefox-Spdy: h2

除了 Cache-Control 之外,我没有看到任何会导致问题的东西,但我已经在 Nginx 配置中禁用了它。

答案1

事实证明,我没有仔细阅读文档。我没有意识到 expires 标头会覆盖常规缓存限制。我所要做的就是添加expiresproxy_ignore_headers指令中。

相关内容