Можно ли вложить базовую аутентификацию? Таким образом, родительская папка и все подпапки могут быть доступны с помощью одной базовой директивы auth, но подпапки имеют отдельный auth
Конфигурация VHost:
<VirtualHost *:80>
ServerName subdomain.domain.com
#
# Comment
#
ErrorLog "/var/log/httpd/analytics_prox_error_log"
CustomLog "/var/log/httpd/analytics_prox_access_log" common
SSLProxyEngine on
SSLProxyVerify none
ProxyRequests Off
<Location />
AuthType Basic
AuthName "ProxyMain"
AuthUserFile /var/www/analytics-auth/.htpasswd
Require user datateam
Satisfy any
Deny from all
Allow from 192.168.0.0/16 10.0.0.0/8
</Location>
<Location /folder1/>
AuthType Basic
AuthName "Proxy"
AuthUserFile /var/www/analytics-auth/.htpasswd
Require user mainuser folder1user
Satisfy any
Deny from all
Allow from 192.168.0.0/16 10.0.0.0/8
</Location>
<Location /anotherfolder/>
AuthType Basic
AuthName "Proxy"
AuthUserFile /var/www/analytics-auth/.htpasswd
Require user mainuser anotherfolderuser
Satisfy any
Deny from all
Allow from 192.168.0.0/16 10.0.0.0/8
</Location>
ProxyPass / https://1.1.1.1/
ProxyPassReverse / https://1.1.1.1/
</VirtualHost>
Базовая аутентификация, запрашиваемая для /, одинакова для всех подпапок и работает правильно. (AuthMain) Однако, если я перехожу к указанной папке, такой как folder1, я получаю базовую аутентификацию root, а не базовую аутентификацию, специфичную для этого места
Это было вызвано отсутствием кавычек вокруг папок в Location. Для меня это решило добавление двойных кавычек вокруг них.
Из документация на <Location>
директива, первая Location
Директива также соответствует всем остальным путям. Поскольку вы используете Apache 2.4, вы должны иметь возможность использовать отрицательные совпадения с LocationMatch
. Что-то вместе
<LocationMatch "^/(?!anotherfolder|folder1)">
должно сработать.