У меня есть дайджест-аутентификация на одном из моих доменов, но я хотел бы отключить ее для обратного прокси.
<VirtualHost *:80>
ServerName example.org
DocumentRoot /var/www/
<Directory /var/www/>
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
AuthType Digest
AuthName "Internal"
AuthDigestDomain http://example.org/
AuthDigestProvider file
AuthUserFile /etc/apache2/example.digest
Require valid-user
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ExpiresActive On
ExpiresDefault "access plus 7 days"
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /api/ http://api.otherdomain.com/ retry=0 nocanon
ProxyPassReverse /api/ http://api.otherdomain.com/
AllowEncodedSlashes On
<Proxy *>
Order allow,deny
Satisfy Any
Allow from all
</Proxy>
Как видите, я безуспешно пытался использовать <Proxy>
блок, чтобы удовлетворить любые запросы.
Я думаю, вы решите свою проблему довольно универсальным способом, поместив конфигурацию обратного прокси в <Location>
тег и использовать внутреннюю структуру Apache объединяет директивы и устанавливает приоритет.
<Location>
директивы применяются последними и должны отменять <Directory>
директива.
<VirtualHost *:80>
ServerName example.org
DocumentRoot /var/www/
<Directory /var/www/>
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
AuthType Digest
AuthName "Internal"
AuthDigestDomain http://example.org/
AuthDigestProvider file
AuthUserFile /etc/apache2/example.digest
Require valid-user
Options FollowSymLinks MultiViews
AllowOverride All
</Directory>
ExpiresActive On
ExpiresDefault "access plus 7 days"
<Location /api/>
Order allow,deny
Allow from all
ProxyPreserveHost On
ProxyPass http://api.otherdomain.com/ retry=0 nocanon
ProxyPassReverse http://api.otherdomain.com/
AllowEncodedSlashes On
</Location>
</VirtalHost>
Из Apache 2.3 вы можете использовать контейнеры авторизации для выражения более сложной логики авторизации.