在 Linux 上让 Apache 与 PHP-FPM 协同工作
一 架构与准备
二 方案一 通过 mod_proxy_fcgi 转发(推荐)
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 将 .php 请求转发到 PHP-FPM(Unix 套接字)
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.x-fpm.sock|fcgi://localhost/var/www/html"
</FilesMatch>
</VirtualHost>
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
三 方案二 通过 mod_fastcgi 调用外部 FPM(备选)
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AddHandler fastcgi-script .php
Action fastcgi-script /fastcgi-php
Alias /fastcgi-php /usr/lib/cgi-bin/fastcgi-php
FastCgiExternalServer /usr/lib/cgi-bin/fastcgi-php -socket /run/php/php8.x-fpm.sock -pass-header Authorization
<FilesMatch \.php$>
SetHandler fastcgi-script
</FilesMatch>
</VirtualHost>
四 验证与常见问题