Можно ли вложить базовую аутентификацию? Таким образом, родительская папка и все подпапки могут быть доступны с помощью одной базовой директивы 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
соответствует всем остальным путям. Поскольку вы используете Apache 2.4, вы должны иметь возможность использовать отрицательные совпадения с LocationMatch
. Что-то в
<LocationMatch "^/(?!anotherfolder|folder1)">
должно работать.