禁用反向代理的身份验证摘要

禁用反向代理的身份验证摘要

我已经在其中一个域上设置了摘要式身份验证,但我想为反向代理禁用它。

<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 开始,您可以使用授权容器来表达更复杂的授权逻辑。

相关内容