【发布时间】:2020-02-13 03:03:01
【问题描述】:
我正在尝试设置多个 php-fpm 服务器来处理流量高峰。
现在我有一台机器运行 Nginx + PHP7.3-fpm + Redis(6vCPU 和 16GB RAM),另一台单独运行 php-fpm 7.3 和相同的扩展。
一切都很好,但我必须为流量高峰制定一个计划。而且我不知道如何将这台新的和孤立的机器连接到与主服务器一起工作而不会遇到很多麻烦。
我已经对此进行了很多研究,但没有发现任何具体的内容。
我能找到的最有价值的链接是:
https://serverfault.com/questions/744124/file-issue-with-nginx-php-fpm-on-separate-servers
https://blog.digitalocean.com/horizontally-scaling-php-applications/
Nginx to serve php files from a different server
我阅读了几个关于它的文档,但主要的疑问仍然存在:
我可以简单地从所有 nginx 位置 conf 中删除 try_files 行并在 php.ini 中设置 cgi.fix_pathinfo =0,这样我就不必在所有服务器上都有文件了吗?
或者为了安全,最好挂载一个 NFS silesystem,让每个 .php 文件在所有服务器(包括 php-fpm 专用服务器)中都有?
有人说“创建一个 NFS 并挂载到所有 php-fpm 代理服务器或使用 rsync 通过服务器同步文件”,其他人说“删除 try_files 它将起作用”,但我确实找到了一篇文章说“删除 try_files并交叉手指以免被黑客入侵”。 :O
什么是更好/正确/最安全的方法?我们现在还可以被黑以删除 try_files 吗?
如果我可以简单地删除 try_files,不同位置的不同软件是否可以正常工作? 假设我在根文件夹中有一个 WP,在 /forum/ 文件夹中有一个 Xenforo 安装。 try_files 彼此不同。
服务器之前的上游块{}
upstream backend {
server unix:/var/run/php/php7.3-fpm.sock weight=100 max_fails=5 fail_timeout=5;
server unix:/var/run/php/php7.3-fpm-2.sock weight=100 max_fails=5 fail_timeout=5;
#I want to add 192.168.x.x:9000 here to balance with this origin server
}
服务器块示例:
location / {
try_files $uri $uri/ /index.php;
}
#AMP
location /amp/ {
try_files $uri $uri/ /amp/index.php;
}
#forum
location /forum/ {
try_files $uri $uri/ /forum/index.php?$uri&$args;
index index.php index.html;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_pass backend;
}
我还绑定 php-fpm 服务器以在其内部 IP(不是 127.0.0.1)上运行,并在 php.ini 中的 listen.allowed_clients 上设置为 accpet nginx 代理 ip
nmap 也在原始服务器的 php-fpm-server-IP:9000 上运行,它说它正在运行并启动。
如果您知道如何操作,或者可能有一个链接显示如何操作,请分享。 我有机器待命,等待一起工作,请帮助实现这一目标。
【问题讨论】:
标签: php nginx load-balancing fpm