情况:我正在使用 Apache 2.2 和 PHP-FPM(mod_fastcgi,PHP 5.4.37)运行服务器。我需要在内部将完整的 URL (如http://dev2.example.com/at/en重写为http://dev2-at.example.com/en ) 。两个 ServerAliases 都在同一个 vhost 上运行(所以,不需要 mod_proxy 吗?)。对于客户端,URL dev.example.com/at/en 应该在浏览器中仍然可见,而 dev2-at.example.com/en 在服务器端(内部)处理。
问题:经过网上的一番研究,我想出了以下配置来修改主机头:
RewriteEngine On
RewriteRule ^/([^/]+)/([^/]+) - [E=FIRST:$1,E=SECOND:$2]
Header set Host dev2-%{FIRST}e.example.com env=FIRST
mod_fastcgi.conf 看起来像:
<IfModule mod_fastcgi.c>
AddHandler php-script .php
Action php-script /php.fcgi virtual
# TCP/IP
FastCGIExternalServer /var/run/php-fpm/apache-php.fcgi -host 127.0.0.1:9000
Alias /php.fcgi /var/run/php-fpm/apache-php.fcgi
# FPM status page.
<Location /php-fpm-status>
SetHandler php-script
</Location>
</IfModule>
这会导致 Host:dev2- php.fcgi .example.com 中的主机标头。我是否必须以某种方式绕过 php-fpm 的标头?还是一般有更流畅的方法来解决这个问题?