Centos

使用 apache proxy_fcgi_module 獲取 503小號OLV_和D小號這大號在和DSOLVED

  • January 21, 2022

我在虛擬機上使用 CentOS 9 Stream,試圖設置我的 apache 伺服器以便能夠在網路上顯示 php 內容。伺服器在它只是 html 時工作正常,但是當我使用 php 嘗試它時,我得到了這些錯誤(瀏覽器中的 503)。我的 httpd.conf 基本上是執行帶有虛擬主機的伺服器的最低要求,我唯一添加的是 php 文件的 SetHandler。我對 php 不是很熟悉,但據我了解,它的作用是當伺服器獲得對 php 文件的請求時,它會呼叫 php-fpm 服務來處理它。

httpd 和 php-fpm 服務都在執行,我將 SELinux bool httpd_can_network_connect 設置為 1,因為我讀到這可能會導致 503。

/var/log/httpd/error.log 說:

[proxy:error] [pid 4807:tid 4812] (111)Connection refused: AH00957: FCGI: attempt to connect to [::]:8000 (*) failed
[proxy_fcgi:error] [pid 4807:tid 4812] [client 192.168.122.1:60494] AH01079: failed to make connection to backend: (null)

我的 httpd.conf:

Listen                  80
Listen                  8080
User                    apache
Group                   apache
ServerRoot              /etc/httpd
ErrorLog                /var/log/httpd/error.log


LoadModule              mpm_event_module        modules/mod_mpm_event.so
LoadModule              systemd_module          modules/mod_systemd.so
LoadModule              unixd_module            modules/mod_unixd.so
LoadModule              authz_core_module       modules/mod_authz_core.so
LoadModule              dir_module              modules/mod_dir.so

LoadModule              proxy_module            modules/mod_proxy.so
LoadModule              proxy_fcgi_module       modules/mod_proxy_fcgi.so


<Directory />
       Require all denied
</Directory>

<Directory /var/www/html>
       Require all granted
</Directory>

<Directory /srv/www>
       Require all granted
</Directory>


<VirtualHost 192.168.122.60:80>
       DocumentRoot "/var/www/html"
       DirectoryIndex  index.html
</VirtualHost>

<VirtualHost 192.168.122.60:8080>
       DocumentRoot "/srv/www"
       DirectoryIndex  index.php

       <FilesMatch \.php$>
           SetHandler "proxy:fcgi:/run/php-fpm/www.sock"
       </FilesMatch>
</VirtualHost>

和我的 www.conf:

listen = /run/php-fpm/www.sock
listen.owner = apache
listen.group = apache
listen.allowed_clients = 127.0.0.1

解決方案:正如 AlexD 指出的那樣,問題是 apache 試圖通過 localhost 而不是套接字連接。我可以通過更改我的配置文件以在 127.0.0.1:9000 上偵聽來使其工作如果我想使用 unix 套接字,我必須像這樣更改 httpd.conf:

<Proxy "unix:/run/php-fpm/www.sock|fcgi://php-fpm">
  ProxySet disablereuse=off
</Proxy>

<FilesMatch \.php$>
  SetHandler proxy:fcgi://php-fpm
</FilesMatch>

在這裡找到這個配置:https ://tecadmin.net/install-apache-php-fpm-centos-8/

錯誤消息(111)Connection refused: AH00957: FCGI: attempt to connect to [::]:8000 (*) failed表明您的 Apache 正在嘗試連接到 TCP 埠 8000 上的後端,而您PHP-FPM正在偵聽 unix 套接字/run/php-fpm/www.sock。您可能忘記重新啟動 Apache。

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