Apache 2.4 + PHP-FPM и заголовки авторизации

Резюме: mod_proxy Apache 2.4, похоже, не передает заголовки авторизации в PHP-FPM. Есть ли способ исправить это?

Длинная версия: Я запускаю сервер с Apache 2.4 и PHP-FPM. Я использую APC как для кэширования кода операции, так и для кэширования пользователей. Как рекомендовано в Интернете, я использую mod_proxy_fcgi от Apache 2.4 для проксирования запросов к FPM, например:

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/foo/bar/$1 

Настройка работает отлично, за исключением одной вещи: APC в комплекте apc.php, используемый для контроля состояния APC, не позволяет мне войти (требуется для просмотра записей пользовательского кэша). Когда я нажимаю «Записи пользовательского кеша», чтобы увидеть пользовательский кеш, он просит меня войти в систему, нажатие на кнопку входа в систему отображает обычную форму входа в систему, но ввод правильного входа и пароля не дает успеха. Эта функция отлично работает при работе с mod_php вместо mod_proxy + php-fpm.

После некоторого поиска в Google я обнаружил, что у других людей была такая же проблема, и выяснил, что это произошло потому, что Apache не передавал HTTP-заголовки авторизации внешнему процессу FastCgi. К сожалению, я нашел исправление для mod_fastcgi, которое выглядело так:

 FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization 

Есть ли эквивалентная настройка или некоторое обходное решение, которое также будет работать с mod_proxy_fcgi?

Related of "Apache 2.4 + PHP-FPM и заголовки авторизации"

Различные модули Apache будут лишать заголовок Authorization , как правило, для «соображений безопасности». Все они имеют разные неясные настройки, которые вы можете настроить, чтобы отменить это поведение, но вам нужно точно определить, какой модуль виноват.

Вы можете обойти эту проблему, передав заголовок непосредственно на PHP через env:

 SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 

См. Также Zend Server Windows – заголовок авторизации не передается скрипту PHP

Это заняло у меня много времени, чтобы взломать, так как это не документировано в mod_proxy или mod_proxy_fcgi.

Добавьте следующую директиву в apache conf или .htaccess:

 CGIPassAuth on 

Подробнее см. Здесь .

Я не нашел никаких аналогичных настроек с mod_proxy_fcgi, но он просто работает для меня по умолчанию. Он запрашивает авторизацию пользователя (.htaccess как обычно), и php получает его, и работает как с mod_php, так и с fastcgi и pass-header. Я не знаю, был ли я полезен …

EDIT: он работает только на teszt.com/ при использовании DirectoryIndex … Если я передаю имя файла php (даже если index.php!), Он просто не работает, не передавайте auth на php. Это блокиратор для меня, но я не хочу понижать до apache 2.2 (и mod_fastgi), поэтому я переношу на nginx (тоже на этом компьютере).