在反向代理后面设置 Apache 基本身份验证

在反向代理后面设置 Apache 基本身份验证

我很难通过机器 A 上设置的反向代理将 htdigest 身份验证传递到需要身份验证的机器 B。

我正在设置一个家庭开发网络,其中包含所有基本工具(Trac、hudson、git、svn 等)。在设置并运行了其中大部分工具后,我希望允许从外部访问它们。出于管理目的,每个服务都在自己的 VM 上运行。我设置了一个反向代理,它是所有端口 80 请求的目标,并根据路径将它们重定向到正确的服务器。

问题表现如下。trac 页面 /login 需要凭据,然后重定向到主页。第一次访问时,它会要求输入凭据。但是当它将您重定向到主页时,您尚未登录,并且任何再次访问登录页面的尝试都会立即重定向到主页。

我的 apache 配置如下:

ProxyPass /trac http://server1/trac
ProxyPassReverse /trac http://server1/trac

<Proxy http://server1/trac>
    Order deny,allow
    Allow from all
</Proxy>

#<ProxyMatch http://server1/trac/[^/]+/login>
#    LoadModule auth_digest_module /usr/lib/apache2/modules/mod_auth_digest.so
#    SetEnv proxy-chain-auth On
#    AuthType Digest
#    AuthName "trac"
#    AuthDigestDomain /trac
#    AuthUserFile /etc/apache2/trac.htdigest
#    Require valid-user
#</ProxyMatch>

编辑:进一步阅读表明,trac 依赖 cookie 进行这种类型的用户身份验证,所以我猜我需要以某种方式代理 cookie。

答案1

我确定问题在于我没有启用 ProxyPassReverseCookieDomain 指令:

ProxyPassReverseCookieDomain external_addr server1

希望这对将来的某人有所帮助

相关内容