我们有 8 个带有 Nginx 的 REST-ish API 服务器,使用 FastCGI 和 PHP-FPM 来处理请求。我们目前正在使用 Nginx 的 FastCGI 缓存(类似 的指令fastcgi_cache_path
)。这意味着 API 响应被缓存,但每个服务器都有一个单独的缓存。
有没有一种在所有八台服务器之间共享缓存存储的好方法?
我们已经考虑过使用Redis作为共享存储,但是可用的模块似乎需要应用程序更改。在某些情况下,我们可能希望缓存超出我们控制范围的响应(通过 HTTP 到外部 API)。理想情况下,可以直接替代 Nginx 内置的 FastCGI 和 HTTP 响应缓存。
小智 1
https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-1/似乎有一篇 关于此问题的相当新的博客文章。如果您运行两个以上的 nginx 缓存服务器,第一个示例可能会很有用。
特别是这篇文章的第二部分对于我当前的用例来说听起来很有趣,我想自动将更改的项目重新爬行到我的缓存中。
它也应该与 NGINX 的开源版本一起使用。基本上,它的工作原理是代理通过每个 NGINX 服务器(Nginx-Cache1->NGinx-Cache2->Origin-Server)级联的请求,每个服务器缓存来自相关上游的内容,如果需要,也可以创建 HA 集群。 https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-2/