Базовая аутентификация в нескольких каталогах на одном виртуальном хосте

Можно ли вложить базовую аутентификацию? Таким образом, родительская папка и все подпапки могут быть доступны с помощью одной базовой директивы 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, а не базовую авторизацию, специфичную для этого местоположения

0
задан 12 April 2016 в 17:23
2 ответа

Это было вызвано отсутствием кавычек вокруг папок в Location. Добавление двойных кавычек вокруг них решило эту проблему для меня.

0
ответ дан 5 December 2019 в 10:33

Из документации по директиве первая директива Location соответствует всем остальным путям. Поскольку вы используете Apache 2.4, вы должны иметь возможность использовать отрицательные совпадения с LocationMatch . Что-то в

<LocationMatch "^/(?!anotherfolder|folder1)">

должно работать.

0
ответ дан 5 December 2019 в 10:33

Теги

Похожие вопросы