我使用 nginx 缓存响应 1 分钟。以下是配置:
proxy_pass http://myupstream.com;
proxy_set_header Host myupstream.com
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache mycache;
proxy_cache_key $scheme$proxy_host$uri$http_accept_encoding;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_cache_lock on;
使用此配置,当上游返回 5xx 响应时,nginx 从缓存中提供服务,这很好。但是我的问题是,当上游开始返回 5xx 并且缓存已过期时,每个传入的请求都被转发到上游,从而给上游服务器带来了巨大的负载,这些服务器已经处于不好的状态(它们以 5xx 响应)。是否可以将 nginx 配置为每 1 分钟向上游转发一次请求,即使上游响应 5xx 也是如此。我添加了以下行但无济于事:
proxy_cache_valid 500 502 503 504 1m;
将不胜感激任何建议。