SetHandler 指令在 VirtualHost 中失败但在主配置中正常

SetHandler directive failing in VirtualHost but OK in main config

设置为 CentOS 7、Apache 2.4.6、php-fpm 5.6 和 7.3(通过 remi repo)。

我最近将我的默认 phpmod 设置转换为 php-fpm,并且 PHP 5.4.16 工作正常。现在我正在尝试启用 PHP 7.3 作为每个虚拟主机的一个选项。我安装了 php73-php-fpm,然后 运行 查看了 Apache 端。

我的 /etc/httpd/conf.d/php.conf 包括以下指令:

<FilesMatch \.php$>
#    SetHandler application/x-httpd-php
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

这适用于所有主机。然后我在一个虚拟主机 .conf 文件中添加了这个 <FilesMatch> 指令:

<VirtualHost *:80>
    ServerName www.sittingduck.co.nz
    ServerAlias sittingduck.co.nz
    DocumentRoot /var/www/sittingduck.co.nz/public_html
    ErrorLog /var/log/httpd/sittingduck.co.nz.error.log
    CustomLog /var/log/httpd/sittingduck.co.nz.requests.log combined
    <FilesMatch \.php$>
        SetHandler "proxy:fcgi://127.0.0.1:9073"
    </FilesMatch>
</VirtualHost>

当我重新启动 httpd 服务器时,以下内容出现在上面指定的错误日志中。

[proxy:error] [pid 17061] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9073 (*) failed
[proxy_fcgi:error] [pid 17061] [client 54.36.148.97:33788] AH01079: failed to make connection to backend: 127.0.0.1

验证两个 php-fpm 服务器确实 运行...

tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      16794/php-fpm: mast 
tcp        0      0 127.0.0.1:9073          0.0.0.0:*               LISTEN      17510/php-fpm: mast 

...接下来我尝试将主 php.conf 切换到 9073 端口。当我这样做时,所有站点都可以工作,并且我可以确认(使用上面站点上的 php 信息页面)我在 PHP 7.3.

运行

我在这里错过了什么?虚拟主机配置肯定是在 php.conf 之后加载的,正如错误提示的那样,fpm 肯定处于工作状态,并且端口显然可以访问。

我觉得我定义指令的方式有一些规则或警告。任何帮助将不胜感激。

问题是 http 与 https。我的配置文件定义了 *:80 但我不假思索地查看了测试页面的 https 版本。 *:443 虚拟主机位于一个单独的配置文件中,该文件是在 certbot 工具安装后添加的。手动编辑这个额外的文件解决了这个问题。

我仍然不太确定为什么日志中的错误在开始时出现,之后就没有了,但这可能是由于在不同时间通过 http and/or https 请求了特定页面。