我很难通过机器 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
希望这对将来的某人有所帮助