我无法通过计算机A上的反向代理设置将htdigest身份validation传递到需要身份validation的计算机B.
我正在build立一个家庭开发networking,所有的基本工具(Trac,Hudson,Git,svn等等)。在大部分这些设置和运行中,我正在寻求允许从外面访问它们。 每个服务都在自己的虚拟机上运行,用于pipe理目的。 我已经设置了一个反向代理,它是所有端口80请求的目标,并根据path将它们redirect到正确的服务器。
问题performance如下。 trac页面/login需要凭据,然后redirect到主页。 您第一次访问它时,会要求提供凭据。 但是,当它将您redirect到主页时,您尚未login,任何尝试再次访问login页面,只是立即redirect到主页。
我的apacheconfiguration如下:
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依赖于这种types的用户身份validation的cookie,所以我猜我需要以某种方式代理cookie。
我确定问题是我没有启用ProxyPassReverseCookieDomain指令:
ProxyPassReverseCookieDomain external_addr server1
希望这有助于未来的人