在Apache和NGINX之间共享PHP-CGI

问题描述:

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

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

您可以发布解决方案作为答案并接受它。 – 2009-02-22 13:13:57

+0

完成。很高兴知道。谢谢! – Mikeage 2009-02-22 19:35:52

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

 
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中的完整路径做到了!