【问题标题】:Nginx load balance with proxied php-fpm - try_filesNginx 负载平衡与代理 php-fpm - try_files
【发布时间】: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

nginx - php-fpm cluster

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


    【解决方案1】:

    由于没有答案可以帮助我,我最终从源服务器到 PHP 服务器进行了 NFS,只是为了获取文件,因此保留了 try_files。我不想在不确切知道安全后果的情况下冒险删除 try_files。

    所以现在对我来说正确的答案是做一个 NFS 并将 NGINX 请求传递给 PHP-FPM 缩放机器。一切都很顺利,没有出现大问题。唯一的问题是更改 php-fpm.conf 中的内部 IP,在 NFS 服务器中包含内部 IP,并在 NGINX 上游池中包含新的内部 IP。当然,将 php 会话从文件中删除到 Redis。这样,在将请求从源服务器更改为扩展服务器时,记录的页面不会注销。

    【讨论】:

      猜你喜欢
      • 2011-07-16
      • 2022-01-10
      • 2018-09-24
      • 2015-03-14
      • 1970-01-01
      • 2016-11-19
      • 2021-03-11
      • 1970-01-01
      • 2020-08-17
      相关资源
      最近更新 更多