5

我想为在 Ubuntu 服务器 12.04.1 上运行的 Apache 反向代理站点添加基本身份验证。

Web 应用程序是在 Java EE 容器上运行的Jenkins 。

我在httpd.conf中添加了以下配置,

ProxyPass         /jenkins/  http://localhost:8080/jenkins/¬
ProxyPassReverse  /jenkins/  http://localhost:8080/jenkins/¬
ProxyRequests     Off¬
ProxyPreserveHost On¬ 
¬
<Proxy http://localhost:8080/jenkins*>¬
  Order deny,allow¬
  Deny from all¬
▸ AllowOverride AuthConfig¬
▸ AuthType Basic¬
  AuthName "jenkins"¬
▸ AuthBasicProvider file¬
  AuthUserFile /etc/apache2/passfile¬
▸ Require valid-user¬
▸ Satisfy any¬
</Proxy>

当我使用错误的密码或不存在的用户名进行身份验证时,我可以在apache的error.log中找到以下消息,

[2012 年 10 月 27 日星期六 17:51:59] [错误] [客户端 222.128.175.95] 用户凯恩:“/jenkins/”的身份验证失败:密码不匹配 [2012 年 10 月 27 日星期六 17:52:04] [错误] [客户端222.128.175.95] 找不到用户阿拉丁:/jenkins/

在passfile中使用正确的用户和密码时不会记录任何消息。虽然我在网络浏览器中输入了正确的用户名和密码,但身份验证对话框会再次提示。我还在apache的access.log中找到了以下输出,

222.128.175.95 - kane [27/Oct/2012:17:39:54 +0800] "GET /jenkins/ HTTP/1.1" 401 794 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.4 (KHTML,如 Gecko)Chrome/22.0.1229.94 Safari/537.4"

有人知道如何使它工作吗?谢谢。

4

2 回答 2

5

您是否也在 Jenkins 上启用了身份验证?有关设置的说明,请参阅此链接:https ://wiki.jenkins-ci.org/display/JENKINS/Apache+frontend+for+security。

特别注意这行说您不能同时在 Jenkins 和 Apache 中启用安全性,因为两者会发生冲突,导致您看到无限提示。不幸的是,您必须选择其中之一。

另请参阅此链接以获取有关 Apache + Jenkins 设置的更一般性讨论:https ://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+behind+Apache

于 2012-11-02T17:47:28.263 回答
1

试试这个配置

ProxyPass         /jenkins/  http://localhost:8080/jenkins/
ProxyPassReverse  /jenkins/  http://localhost:8080/jenkins/
ProxyRequests     Off
ProxyPreserveHost On

<Proxy http://localhost:8080/jenkins*>
    AllowOverride None
    Order allow,deny
    allow from all
    AuthName            "jenkins"
    AuthBasicProvider   file
    AuthType            basic
    AuthUserFile        /etc/apache2/passfile
    <Limit GET POST>
        require valid-user      
    </Limit>
    Satisfy all
</Proxy>
于 2012-10-30T13:58:03.300 回答