Apache-2.2

在 centos 6 上配置 php-fpm mod 代理的問題

  • March 10, 2020

我在 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

謝謝你的關注。最好的祝福

Apache 2.2 本身沒有mod_proxy_fcgi(參見這個問題),您必須從其他來源獲得它。此外,使用mod_proxySetHandler指令適用於 2.4.10 版本。所以:

  1. 你的<FilesMatch>塊沒有效果,所以你可以刪除它,
  2. 只有您的ProxyPassMatch指令有效。但是您的版本mod_proxy_fcgi不支持 Unix 域套接字,因此您需要使用套接字連接到PHP-FPMTCP/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

引用自:https://serverfault.com/questions/1006330