我对缓存实现有一些疑问,因为我发现的大多数资源似乎没有区分 NGINX 作为反向代理还是“本地”网络主机。
我在 LEMP 堆栈上设置了一个 WordPress 服务器(因此 NGINX 是“本机”Web 主机),它位于单独的 NGINX 反向代理后面。为了进行缓存,我在托管 WordPress 的服务器上实现了 fastcgi_cache。我的理由是,由于该服务器无论如何都在处理 php,因此最合理的方法是将其缓存在本地,因为它位于同一台机器上。这样,如果我从上游服务器上的反向代理获得 .php 请求,它已经在那里等待了。
1)这个逻辑是否合理/正确,或者我仍然应该在反向代理上处理 fastcgi_cache?
在我的反向代理(也运行 NGINX)上,我将其设置为将 http 流量通过 proxy_pass 传递到上述 WordPress 服务器。我将让浏览器缓存静态内容(如 .js、.css)。此外,我计划让反向代理 proxy_cache 通常会转发到 WordPress 上游的 HTTP 流量。我将从代理中排除某些位置(/wp-admin/、cookies 等)。我的逻辑是,在这里处理 HTTP proxy_cache 最有意义,因为它最接近客户端。
2)这是处理此问题的适当方法吗?
3) .php 文件的请求是否仍会到达我的 WordPress 服务器并由 fastcgi_proxy/fastcgi_cache 处理?我的猜测/担心是不会,因为这些请求毕竟仍然是 HTTP 请求。
Tl;dr:我有两台 NGINX 服务器:一台托管 WordPress,另一台用作反向代理。我计划在反向代理上使用 proxy_caching,在 WordPress 服务器上使用 fastcgi_caching。这种配置可以接受吗?
这些问题不一定只针对我的特定应用程序,而且还可以帮助我了解 NGINX 究竟应该如何工作。提前致谢!
答案1
这取决于你的网站性质。如果没有动态内容,那么使用 nginx 缓存是安全的。
nginx 中缓存的问题在于内容更改时如何正确向 nginx 发出信号。如果您设置了两个缓存服务器,这个问题会更加严重。
如果您的网站上有动态内容,那么我建议使用 W3 Total cache 进行缓存,因为它可以正确地使缓存无效。