【问题标题】:Nginx: how to continuously cache response?Nginx:如何持续缓存响应?
【发布时间】:2021-04-12 17:03:01
【问题描述】:

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

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

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

如果Nginx burst limit超过,如何连续发送缓存响应? (文档:过多的请求会被延迟,直到它们的数量超过最大突发大小,在这种情况下,请求会以error 终止)

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

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

【问题讨论】:

  • 你能检查一下吗 - nginx.com/blog/rate-limiting-nginx
  • 一个想法可能是在后台有一个 cron 每隔 10m 更新一次缓存,并让所有请求始终从缓存中获取。如果 cron 出现问题,用户将获得以前的缓存。
  • @MagnusEriksson 谢谢,可能是更好的解决方案,但我现在需要调整 Nginx
  • @Dmitry 谢谢。当突发限制超过时,是否可以向客户端发送先前缓存的响应而不是 503 错误?这个想法是不断地向用户发送缓存的响应,而不是拒绝请求。

标签: php performance nginx load-balancing nginx-config


【解决方案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/

【讨论】:

    猜你喜欢
    • 2021-10-21
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2018-10-18
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多