【问题标题】:Sharing PHP-CGI between Apache and NGINX在 Apache 和 NGINX 之间共享 PHP-CGI
【发布时间】:2010-10-09 03:35:27
【问题描述】:

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

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

【问题讨论】:

  • 您可以将解决方案作为答案发布并接受。

标签: php apache nginx fastcgi


【解决方案1】:

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

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

【讨论】:

  • 配置的其余部分是什么样的?在我的 Apache 配置中插入上述行不起作用。
  • 你能解释一下吗?我试图让 apache22+mod_fastcgi 也能正常工作,但没有任何运气......我让它与默认虚拟主机一起工作,但由于 FastCGIExternalServer 在多个主机之间共享,你将如何共享它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多