прокси-сервер — Apache 2.4 и php-fpm не запускают базовую аутентификацию apache http для страниц php

Я уверен, что это вопрос, который был задан где-то, если так извините, но поиск в Google не дал мне ничего осязаемого.

Вот мой сценарий:

Я защищаю веб-каталог с помощью Apache HTTP Basic Auth. Итак, у меня есть .htaccess в корневой папке, и мой httpd.conf настроен на переопределение всего, так что он принимает во внимание .htaccess. Содержание моего .htaccess выглядит следующим образом:

AuthType Basic

AuthName «test»

AuthUserFile /etc/httpd/.test_pass

Требуется действительный пользователь

.test_pass был успешно установлен с помощью htpasswd. При доступе к корневой веб-папке через браузер или любой html-файл, я получаю корректную проверку подлинности. Использование пароля дает мне ожидаемый доступ.

Но когда я захожу на страницу php, всплывающее окно аутентификации не появляется, и страница php отображается.

Вот мои настройки:

  • Apache версия: 2.4.6
  • php-fpm: PHP 5.4.16 (fpm-fcgi) с Zend Engine v2.4.0
  • Использование proxypass из proxy_fcgi_module (shared) для связи
    между apache 2.4 и php-fpm
  • Также я не использую сокетные соединения, потому что apache 2.4.6 не
    поддержать это
  • Моя настройка прокси-сервера выглядит следующим образом и работает довольно хорошо:
    ProxyPassMatch ^ / (..PHP (/.)?) $
    FCGI: //127.0.0.1: 9000 / вар / WWW / HTML / $ 1

Мне нужно иметь возможность установить аутентификацию имени пользователя и пароля через базовую авторизацию apache, которая защищает все файлы, включая файлы php в каталоге.

Я использую программное обеспечение с открытым исходным кодом; поэтому изменение кодов программного обеспечения является самым последним средством.

Есть ли решение для / php-fpm и mod_proxy_fcgi?

Спасибо

2

Решение

После нескольких часов исследований я понял, что причина этого заключается в том, что директива ProxyPassMatch является первой директивой, подлежащей обработке, и это заставляет apache игнорировать другие директивы для расширений .php.

Чтобы использовать другие директивы apache с php-fpm через proxy_fcgi_module, лучше использовать директиву filesmatch вместо proxypassmatch.

Синтаксис выглядит следующим образом:

<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"</FilesMatch>
3

Другие решения

Других решений пока нет …