在 centos 6 上配置 php-fpm mod 代理的问题

在 centos 6 上配置 php-fpm mod 代理的问题

我在 Centos 6 发行版上配置 PHP_FPM。我使用 php 5.4.45 和 apache 2.2.15 以及“mod_proxy.so”来调用套接字。但是使用以下 Vhost 和 php-fpm 配置,我的站点日志中仍然出现相同的两个问题:

[Tue Mar 10 11:36:49 2020] [error] (111)Connection refused: proxy: FCGI: attempt to connect to 127.0.0.1:0 (*) failed
[Tue Mar 10 11:36:49 2020] [error] [client 192.168.1.38] AH01079: failed to make connection to backend: localhost

我尝试并阅读了大量解决方案,但没有一个能给我带来太大帮助。这是我的 Vhost 和 php-fpm www.conf 文件的配置:

<VirtualHost _default_:80>
   DocumentRoot "/var/www/html"

   <Directory "/var/www/html">
           Order allow,deny
            Allow from all
           AllowOverride All
   </Directory>

   ErrorLog logs/default-error_log
   LogLevel warn
   TransferLog logs/default-access_log
   CustomLog logs/default-request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

    ProxyPassMatch ^/(.*\.php)$ fcgi://localhost/var/www/html/$1
    DirectoryIndex index.php info.php

    <FilesMatch \.php$>
           SetHandler "proxy:unix:/var/run/php-fpm/default.sock|fcgi://localhost/"
    </FilesMatch>

listen = /var/run/php-fpm/default.sock
listen.owner = apache
listen.group = apache
listen.mode = 0660
user = apache
group = apache
listen.allowed_clients = 127.0.0.1
php_value[opcache.file_cache] = /var/lib/php/opcache

感谢您的关注。谨致问候

答案1

Apache 2.2 本身没有mod_proxy_fcgi(参见这个问题),您必须从替代来源.此外使用mod_proxy指令SetHandler从版本 2.4.10 开始。 所以:

  1. 你的<FilesMatch>屏蔽没有任何效果,所以你可以删除它,
  2. 只有您的ProxyPassMatch指令有效。但是您的版本mod_proxy_fcgi不支持 Unix 域套接字,因此您需要连接到PHP-FPM使用TCP/IP套接字。为此,请修改文件www.conf并将listen指令替换为:

    listen 127.0.0.1:9000
    

    并重新启动PHP-FPM. 在 Apache 2 端将ProxyPassMatch指令替换为:

    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
    

    并重新加载Apache2

相关内容