Apache 2.4和PHP-FPM套接字

时间:2014-10-14 11:13:05

标签: apache sockets php mod-proxy

找不到几天困扰我的问题的答案:

根据虚拟主机文件中的Apache documentation,我应该写一下:

ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/path/to/socket.sock|fcgi://127.0.0.1:9000/path/to/your/documentroot/

但我是否必须为其他网站使用另一个fcgi端口? e.g。

...socket2.sock|fcgi://127.0.0.1:9001...
...socket3.sock|fcgi://127.0.0.1:9002...

或者

...socket2.sock|fcgi://127.0.0.1:9000...
...socket3.sock|fcgi://127.0.0.1:9000...

它可以双向工作 - 日志或屏幕上没有错误。我知道如果我使用TCP而不是UNIX套接字,我应该为每个站点使用不同的端口(如果我使用相同的端口也会引发错误)但我不确定我是否理解这种Apache语法。

1 个答案:

答案 0 :(得分:0)

这完全取决于您如何为php-fpm配置工作池。

例如,在centos 7上,您将在/etc/php-fpm.d /

中找到www.conf

这通常是端口9000的配置。

您可以毫无问题地为所有虚拟主机使用相同的端口。

但是如果按照设计你想为不同的虚拟主机使用不同的端口,你可以复制www.conf,重命名它并编辑文件。

确保更改顶部的池名称。您将找到默认名称[www]。您可以将其编辑为[your_preferred_pool_name]

然后在listen选项中,您可以将端口更改为您想要的端口。

重新启动php-fpm后,您将拥有[www]池和[your_preferred_pool_name]池。

要配置虚拟主机以使用新池,只需通过将端口更新到conf文件中新定义的端口来更新ProxyPassMatch配置。

但是,对所有虚拟主机使用相同的池(端口)应该没有任何问题。