我正在尝试从我的笔记本电脑(Windows 7,Apache 2.2.17)设置 Apache2 反向代理到我们网络上的 Nexus 服务器(Windows Server 2003)。这只是在我们拥有的 Internet 可见服务器上进行实际设置之前的一次测试。我可以完美地设置代理本身并代理 Nexus。但是当我尝试对代理应用身份验证时,事情就出错了。我想监听端口 8090。
以下是我的 httpd.conf 文件中的相关内容:
Listen 8090
ProxyRequests Off
ProxyPreserveHost On
<Proxy /nexus>
Order deny,allow
Allow from all
</Proxy>
<Location /nexus>
Order deny,allow
Allow from all
ProxyPass http://secret.mydomain.com:8082/nexus
ProxyPassReverse http://secret.mydomain.com:8082/nexus
AuthType Basic
AuthName "Nexus"
AuthBasicProvider file
AuthUserFile c:\tmp\users
Require valid-user
</Location>
如果我注释掉所有 Auth* 指令,那么使用如下 URL 代理 Nexus 就可以正常工作http://localhost:8090/nexus/content/groups/central/但是,一旦我重新添加这些 Auth* 指令,我就会得到一个登录框,输入有效的凭据,然后它会再次提示。一次又一次。我注意到的一件事是,第一次出现凭据对话框时,领域显示为“Nexus”(就像我在 httpd.conf 中看到的那样)。但在所有后续提示中,它都显示为“Sonatype Nexus Repository Manager”,我猜想它来自 Nexus 服务器本身,即使它不需要身份验证。
另外,我知道密码文件和用户/密码是好的,因为如果我仅使用它们为本地目录设置身份验证,它就可以正常工作。
我找到了各种关于反向代理和身份验证的博客文章,但我似乎无法让它们协同工作。我尝试了很多方法,但我认为这是最简单的问题。
有人发现我的配置有什么明显的错误吗?或者有什么细微的错误吗?
答案1
您的用户身份验证正在传递到后端,您可以尝试使用以下方法取消设置身份验证标头
RequestHeader unset Authorization