Ubuntu 16.04 LTS работает на экземпляре AWS. Apache 2.4.18 / PHP7.0-fpm
Проблема с базовой аутентификацией. Я пытаюсь pw-protect / var / www / html / admin //. Я обнаружил, что все файлы, отличные от php, защищены, но файлы .php, похоже, переходят прямо на прокси без применения basic-auth и запроса имени пользователя / пароля.
Я пробовал вставлять директивы auth в .conf и .htaccess. Я безуспешно пробовал использовать теги Directory и Location. Я действительно читал, что proxy-fcgi не передавал заголовки аутентификации и предложение принудительно использовать их с
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
Но это не помогло (и моя проблема на самом деле не в передаче оценок, а в том, чтобы их спросили в первую очередь.
Вот директива прокси:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://localhost:9000/var/www/html/
Я пробовал выразить базовую аутентификацию несколькими способами ... но вот один:
<Directory ~ "/var/www/[^/]+/[^/]+/admin/">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
Другие вещи, которые я пробовал безуспешно:
Я нашел решение после более глубоких поисков. Благодаря ответу Яша на этой панели. По его словам, проблема в том, что директива proxypass имеет приоритет над директивой auth и отправляет .php прокси-серверу до того, как потребуются учетные данные. Исправление - установитьHandler в директиве filesMatch. Это сработало, как и ожидалось. (обратите внимание, я изменил директиву directorymatch на - но это не имеет отношения к основному вопросу).
<DirectoryMatch "/var/www/html/(admin|.+test)">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</DirectoryMatch>
<Proxy "fcgi://localhost:9000/" enablereuse=on max=10>
</Proxy>
<FilesMatch \.php$>
SetHandler "proxy:fcgi://localhost:9000"
</FilesMatch>