阅读了许多教程后,我成功地在 Ubuntu 12 LTS 上运行了 Apache MPM-Worker 和 PHP-FPM。我为每个用户设置了单独的池,一切都运行良好。但是,我需要为其中一个域安装 SSL。我设法创建了自签名证书,只是为了建立并运行安全连接。我的问题是,使用我当前的设置,我将无法为另一个域运行 SSL,因为在重新加载 Apache 设置时,我收到错误(警告):
[2015 年 3 月 15 日星期日 16:52:59] [警告] /etc/apache2/sites-enabled/www.my-site-name.com 第 21 行的 Alias 指令可能永远不会匹配,因为它与之前的 Alias 重叠。
我的设置如下:
/etc/apache2/conf.d/php5-fpm.conf
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
</IfModule>
/etc/php5/fpm/pool.d/example.conf
[example]
user = example
group = example
listen = /tmp/php5-fpm-example.sock
listen.owner = example
listen.group = example
listen.mode = 0660
/etc/apache2/sites-enabled/www.my-site-name.com
<VirtualHost *:80>
content goes here
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
content goes here
</VirtualHost>
</IfModule>
<IfModule mod_fastcgi.c>
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi_example
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi_example -socket /tmp/php5-fpm-example.sock -idle-timeout 300 -pass-header Authorization -flush
</IfModule>
当我输入代码时 别名 /php5-fcgi ...里面虚拟主机 *:80和虚拟主机 *:443(80 和 443 各两次)我收到重复规则的错误。但是当我将代码放在外面时虚拟主机 *:80和虚拟主机 *:443如上例所示,此规则充当全局规则。这意味着如果我不为某个网站创建用户,它会将此用户作为默认用户应用 - 例如。因此,在我看来,我将无法为其他网站设置 SSL。
我怎样才能在之后添加代码如果模块 mod_fastcgi.c实现安全和非安全连接而不会收到来自 Apache 的错误?
任何有关我案件的帮助都将非常感谢。
答案1
我发布了这个问题,不久之后,我在另一篇帖子中找到了答案Apache 和多个 PHP-FPM 池
该代码对我来说并不是 100% 起作用,但它向我展示了正确的方法。
此代码对我不起作用:
<FilesMatch \.php$>
SetHandler php-script
</FilesMatch>
所以我的代码很简单:
AddHandler php5-fcgi .php
我为 SSL 包含了此代码:
<IfModule mod_fastcgi.c>
Alias /php5-fcgi /usr/lib/cgi-bin/php5-ssl-fcgi_example
FastCgiExternalServer /usr/lib/cgi-bin/php5-ssl-fcgi_example -socket /tmp/php5-fpm-example.sock -idle-timeout 300 -pass-header Authorization -flush
</IfModule>
注意安全套接字在别名和FastCgi外部服务器. 对于我来说,该配置无论如何都运行良好。