Nginx:如何持续缓存响应?

问题描述 投票:0回答:2

我在后端有一个REST api,这个api由Nginx缓存(TTL约为10m)。

但是在 Nginx 缓存过期和再次建立缓存之间对后端 api 的调用次数有问题。

这么短的时间内调用次数太大,导致服务器过载。

如果超过Nginx突发限制,如何持续发送缓存的响应? (文档:过多的请求会被延迟,直到其数量超过最大突发大小,在这种情况下,请求会因错误而终止)

enter image description here

当我的后端正在处理新响应时,我可以使用 Nginx 发送之前缓存的响应吗?是否可以在突发限制事件上自定义触发?

enter image description here

任何建议或例子将不胜感激!

php performance nginx load-balancing nginx-config
2个回答
1
投票

正如 Igor(Nginx 背后的人)在这里提到的:

您可以在请求中使用“Some-Secret-Header: 1”绕过缓存,并且 设置:proxy_no_cache $http_some_secret_header;响应可能是 已缓存。

(来源https://forum.nginx.org/read.php?2,99559,99567#msg-99567

另一种选择是在此处使用“缓存清除”模块https://www.nginx.com/resources/wiki/modules/


0
投票

NGINX 可以配置为在无法获取新鲜内容时从缓存中传递陈旧内容

location / { # ... proxy_cache_use_stale 错误超时 http_503; # ... }

使用此示例配置,如果 NGINX 从源服务器收到错误、超时或任何指定的 5xx 错误,并且其缓存中存在所请求文件的过时版本,它会传递过时文件,而不是将错误中继到客户。 https://blog.nginx.org/blog/nginx-caching-guide

© www.soinside.com 2019 - 2024. All rights reserved.