在Apache和NGINX之间共享PHP-CGI


1

我一直在我的网站上运行大部分PHP应用程序,都是由NGINX提供服务的fastcgi后端。我有一个新的应用程序,它似乎与Apache很好地结合在一起;例如,它很大程度上依赖于动态编写的.htaccess文件。我正在努力将其修改为使用NGINX本地工作,但这还没有准备好。同时,我将把NGINX代理的所有连接直接连接到Apache,并让Apache处理它。但是,我使用的是内存有限的VPS,我宁愿不为NGINX(带有自己的APC缓存)运行一组PHP-CGI进程,而为Apache运行另一组PHP APC缓存)。有没有人有幸在两者之间共享PHP?

mod_ fcgid似乎不支持使用已经运行的服务器,所以我尝试了mod_fastcgi。这似乎起初工作,但吸收了相当多的内存(承诺 - 它正在增长,而不仅仅是静态)。更糟糕的是,我无法在我的apache配置中获得DirectoryIndex行来使用mod_fastcgi!

我加

 
    AddHandler php5-fastcgi .php 
    FastCgiExternalServer /var/www -host 127.0.0.1:9000 

我的Apache的配置,并且所有.PHP页面时处理,而不是像http://example.com/foo/路径呢服务器/foo/index.php!如果我删除FastCgiExternalServer,那么它会找到index.php,但当然只是将它显示为文本。

我假设这是因为DirectoryIndex是在FastCgiExternalServer之后处理的,但我不知道如何改变它。

  0

您可以发布解决方案作为答案并接受它。 22 2月. 092009-02-22 13:13:57

  0

完成。很高兴知道。谢谢! 22 2月. 092009-02-22 19:35:52

8

问题已解决。窍门是使用以下几行

 
FastCGIExternalServer /var/www/fast-cgi-fake-handler -host 127.0.0.1:9000 
AddType application/x-httpd-fastphp5 .php 
Action application/x-httpd-fastphp5 /fast-cgi-fake-handler 

Action +中的相对路径+ FastCGIExternalServer中的完整路径做到了!

+1

你的配置的其余部分是什么样的?在我的Apache配置中插入上述行不起作用。 17 10月. 102010-10-17 22:40:09

  0

你能解释更多吗?我试图让apache22 + mod_fastcgi工作,没有任何运气......我得到它工作瓦特/默认虚拟主机,但由于FastCGIExternalServer在多个主机之间共享,你将如何分享它? 13 3月. 122012-03-13 21:14:30