Windows 7 上带有身份验证的 Apache2 反向代理?

Windows 7 上带有身份验证的 Apache2 反向代理?

我正在尝试从我的笔记本电脑(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

相关内容