![独立/单独的服务器作为其他节点的 PHP 处理器](https://linux22.com/image/804551/%E7%8B%AC%E7%AB%8B%2F%E5%8D%95%E7%8B%AC%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BD%9C%E4%B8%BA%E5%85%B6%E4%BB%96%E8%8A%82%E7%82%B9%E7%9A%84%20PHP%20%E5%A4%84%E7%90%86%E5%99%A8.png)
从我在各种文档和示例配置中看到的情况来看,您可以在不同的服务器/硬件上设置 PHP-FPM,与您的 Web 服务器(在我的情况下是 nginx)分开。
尽管大多数例子都列出了这样的一些变化:
location ~ \.php {
[various parameters]
fastcgi_pass 127.0.0.1:9000;
}
您可以让 fastcgi_pass 重定向到任何 IP 地址(安全的是 192.168.1.10,或者 200.55.35.40,任意选择!),从而将 PHP 处理委托给不同的服务器。
我的问题是:这些单独的服务器必须在其文件系统中访问 PHP 文件,对吗?如果是,我该如何配置 PHP 查找文件的根目录,因为这通常是在 nginx 的配置中完成的(就我而言)。是通过池配置中的 chroot 和 chdir 参数还是我从 nginx 发送的 SCRIPT_FILENAME?
现在最有趣的部分(对我来说):如果不需要在该服务器上保存文件(并且 nginx 将文件提供给 fastcgi_pass 中的 ip:port),那么包含如何工作?
我只是想设置一堆 PHP-FPM 服务器并让它们承担 Wordpress Multisite 节点的处理负载,而不必来回 rsync 大量内容。
答案1
这些文件也需要存在于 PHP 后端服务器上,并且它们必须位于与 Web 服务器本身完全相同的路径中。PHP 不知道如何转换脚本文件路径,因此它使用从前端服务器传递的路径。
答案2
最简单的方法是将所有文件放在共享存储(即 NFS 挂载)中,然后将其挂载到所有服务器上的同一挂载点。这样,您就不需要执行任何类型的 rsync 或其他复制。