我已经在其中一个域上设置了摘要式身份验证,但我想为反向代理禁用它。
<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>
块来满足任何要求,但没有成功。
答案1
我认为你可以通过把你的反向代理配置放在一个<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 开始,您可以使用授权容器来表达更复杂的授权逻辑。