Apache2-每个虚拟主机都必须包含默认的 php7.2-fpm.conf 吗?

Apache2-每个虚拟主机都必须包含默认的 php7.2-fpm.conf 吗?

我正在尝试使用 mod_proxy_fcgi 从 mod_php 转移到 php-fpm。

安装所需的模块后,我尝试按照安装过程中收到的通知进行操作:

默认情况下不启用 PHP 7.2 FPM。

要在 Apache2 中启用 PHP 7.2 FPM,请执行以下操作:

a2enmod proxy_fcgi setenvif

a2enconf php7.2-fpm

完成此操作并重新启动 Apache 后,我的网站以纯文本形式向我提供 php 文件。

仅在添加Include conf-enabled/php7.2-fpm.conf到我的虚拟主机配置文件后(设置 letsencrypt 后,我​​的所有虚拟主机都有两个,并且必须将其添加到两者中)。

我有点不愿意这样做 - 将来php7.2-fpm.conf可能会转移到php7.3-fpm.conf并且我必须再次添加触摸所有配置文件。

这是的内容php7.2-fpm.conf

# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module>
    # Enable http authorization headers
    <IfModule setenvif_module>
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    </IfModule>
    <FilesMatch ".+\.ph(ar|p|tml)$">
        SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </FilesMatch>
    <FilesMatch ".+\.phps$">
        # Deny access to raw php sources by default To re-enable it's recommended to enable access to the
        # files only in specific virtual host or directory
        Require all denied
    </FilesMatch>
    # Deny access to files without filename (e.g. '.php')
    <FilesMatch "^\.ph(ar|p|ps|tml)$">
        Require all denied
    </FilesMatch>
</IfModule>
</IfModule>

所以我想知道是否有办法在不触及所有虚拟主机配置文件的情况下改变 php-fpm 机制的工作行为?

答案1

我认为您必须仅使用虚拟主机中的 ExecCGI 选项。

例子:

<VirtualHost *:80>
  DocumentRoot /var/www/html
  Protocols h2 h2c http/1.1
  <Directory /var/www/html>
    Options -Indexes +FollowSymLinks +MultiViews +ExecCGI
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

相关内容