在Apache和NGINX之间共享PHP-CGI

时间:2009-02-22 10:17:57

标签: php apache nginx fastcgi

我一直在我的网站上运行我的大部分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之后处理的,但我不知道如何更改它。

1 个答案:

答案 0 :(得分: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中的完整路径做到了!