Обмен PHP-CGI между Apache и NGINX


1

Я использую большинство своих PHP-приложений на своем веб-сайте на бэкэнд fastcgi, обслуживаемый NGINX. У меня есть новое приложение, которое кажется довольно хорошо интегрированным с Apache; он сильно зависит от динамически написанных файлов .htaccess, например. Я работаю над его модификацией для работы с NGINX, но это еще не готово. Тем временем, у меня будет прокси-сервер NGINX, все подключения к этому пути прямо к Apache, и пусть Apache справится с этим.

Однако, я с ограниченным размером памяти VPS, и я предпочел бы не запустить один набор PHP-CGI процессов для NGINX (со своим собственным кэшем APC), а другой для Apache (с использованием дополнительной памяти для их Кэш APC). Неужели кому-то повезло с разделом PHP между ними?

mod_fcgid, похоже, не поддерживает использование уже запущенных серверов, поэтому я попробовал mod_ fastcgi. Казалось, это сработало сначала, но было сосать довольно много памяти (совершенное - оно росло, а не просто статично). Хуже того, я не мог получить строку DirectoryIndex в моих конфигурациях apache для работы с 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 фев. 092009-02-22 13:13:57

  0

сделано. хорошо знать. благодаря! 22 фев. 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 

относительный путь в действии + полный путь в FastCGIExternalServer сделал это!

+1

Как выглядит остальная часть вашей конфигурации? Вставка указанных строк в моей конфигурации Apache не работает. 17 окт. 102010-10-17 22:40:09

  0

не могли бы вы объяснить больше? Я пытаюсь заставить apache22 + mod_fastcgi работать так же, как и без везения ... Я получил его для работы с виртуальным хостом по умолчанию, но поскольку FastCGIExternalServer разделяется между несколькими узлами, как вы можете поделиться им? 13 мар. 122012-03-13 21:14:30