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 его не поддерживает.
  • Моя настройка proxypass выглядит следующим образом и работает очень хорошо: ProxyPassMatch ^ / (. .php (/.)?) $ Fcgi: //127.0.0.1: 9000 / var / www / html / $ 1

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

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

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

Спасибо


person Yash    schedule 13.03.2015    source источник


Ответы (1)


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

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

Синтаксис следующий:

<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
person Yash    schedule 15.03.2015