Я пытаюсь заставить сервер работать таким образом, как nginx-> apache2.4-> php-fpm (через mod_proxy_fcgid) (nginx для обслуживания статических файлов) (я не уверен, что сейчас нужен apache). Это работает, но у меня мало вопросов.
Когда я использовал apache2.2 с php в качестве модуля apache (на старом сервере), я мог установить php_admin_value, например, для каждого виртуального хоста, например php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f owner@example.com"
. Теперь, когда я использую php-fpm, apache их не понимает и не запускается. Как я могу установить эти значения для каждого виртуального хоста при использовании php-fpm?
Второй вопрос: как сделать _SERVER ["REMOTE_ADDR"] заполненным реальным удаленным адресом? С nginx + apache + php в качестве модуля apache это было решено с помощью мода rpaf, но на данный момент _SERVER ["REMOTE_ADDR"] отображает 127.0.0.1.
Последний вопрос. Если я решу просто перейти на nginx + php-fpm, какую «важную» функциональность я потеряю, отказавшись от apache?
ОБНОВЛЕНИЕ 1.
Очевидно, mod_rpaf не делал того, что должен был делать. Apache фактически предоставляет официальный мод с аналогичной функциональностью для 2.4. Если кому-то это тоже понадобится, вот как это получить:
1. wget https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/metadata/mod_remoteip.c
2. apxs -cia mod_remoteip.c
3. Включите мод LoadModule remoteip_module usr / lib / apache2 / modules / mod_remoteip.so
4. Настроить мод
<IfModule remoteip_module>
RemoteIPHeader X-Real-IP
RemoteIPInternalProxy 127.0.0.1
</IfModule>
Примечание. Шаг 4 зависит от вашей настройки nginx. Я предполагаю, что это будет работать и с X-Forwarded-To. На этом проблема №2 решена.
ОБНОВЛЕНИЕ 2.
Эти параметры могут быть установлены в файлах конфигурации пулов как php_admin_value[open_basedir]
например. Для этого требуется отдельный пул для каждого виртуального хоста, что, по-моему, не так уж и здорово, но, поскольку у меня всего 4 виртуальных хоста, это не слишком беспорядочно.
Итак, проблема №1 решена.
Это можно установить с помощью:
fastcgi_param PHP_VALUE 'sendmail_path "/usr/sbin/sendmail -t -i -f owner@example.com"';
Если вам нужно передать несколько значений, все они должны быть в одном PHP_VALUE
, разделены по \n
.
fastcgi_param PHP_VALUE 'allow_url_fopen 0\nmemory_limit 64M'
Добавьте удаленный IP-адрес в заголовки HTTP (X-Forwarded-For) для apache, добавив в nginx следующее:
proxy_set_header X-Forwarded-For $ remote_addr;
Использовать mod_extract_forwarded модуль apache для извлечения этих IP-адресов