2

我一直在我的网站上的 fastcgi 后端运行我的大部分 PHP 应用程序,由 NGINX 提供服务。我有一个新的应用程序,它似乎与 Apache 很好地集成了;例如,它严重依赖于动态编写的 .htaccess 文件。我正在修改它以与 NGINX 一起工作,但这还没有准备好。与此同时,我打算让 NGINX 代理到该路径的所有连接,直接连接到 Apache,并让 Apache 处理它。

但是,我在一个内存有限的 VPS 上,我宁愿不为 NGINX 运行一组 PHP-CGI 进程(使用它们自己的 APC 缓存)和为 Apache 运行另一组 PHP-CGI 进程(为它们的 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 之后处理,但我不知道如何更改。

4

1 回答 1

9

问题解决了。诀窍是使用以下几行

FastCGIExternalServer /var/www/fast-cgi-fake-handler -host 127.0.0.1:9000
AddType application/x-httpd-fastphp5 .php
动作应用程序/x-httpd-fastphp5 /fast-cgi-fake-handler

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

于 2009-02-22T19:33:42.527 回答