Назад | Перейти на главную страницу

nginx + apache2.4 + php-fpm - СЕРВЕР [«REMOTE_ADDR»] и php_admin_value

Я пытаюсь заставить сервер работать таким образом, как 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'
  1. Добавьте удаленный IP-адрес в заголовки HTTP (X-Forwarded-For) для apache, добавив в nginx следующее:

    proxy_set_header X-Forwarded-For $ remote_addr;

  2. Использовать mod_extract_forwarded модуль apache для извлечения этих IP-адресов