我正在运行Apache Server 2.2来处理Jenkins和SonaType Nexus信息(两者都安装为Windows服务)。虽然SonatypeNexus完美运行但Jenkins却没有。更具体一点:我不能登录詹金斯。仅供您注意:我们使用LDAP登录,但这不能成为登录失败的原因,因为从本地主机登录可以正常工作。
如果我尝试从localhost:8071
登录Jenkins,它的效果非常好。
当我通过网络从另一个系统登录时(使用https://myServer.com:8095/
)我可以浏览和配置Jenkins,但我无法登录。每当我尝试时,我都会“重定向”到Jenkins页面,然后点击“登录”按钮。
安全设置设置为“每个人都可以做任何事情” - >也不是原因。
提示0:您可能已经注意到我们正在使用https来处理来自外部专用于服务器的任何请求。但是在服务器内,Apache只使用http来处理信息 - >这会导致问题吗?
提示1:我只能使用正确的登录参数“重定向”。使用错误的导致我“登录信息无效。请再试一次。”页。
提示2: Sonatype Nexus在同一台Apache服务器后运行并且运行良好。
潜在原因:猜测我可以通过localhost登录的原因,但不是通过网络必须是我们的Apache 2.2服务器,它处理信息错误。通过使用localhost我可以绕过Apache( - >工作),但通过网络使用Apache( - >不起作用)。
任何想法如何解决这个或至少是什么原因?
以下是apache服务器(httpd-ssl.conf)中可能有用的一些设置:
<VirtualHost *:8095>
ServerName myServer.com
ServerAdmin admin@myServer.com
# Nexus via HTTPS.
ProxyPass /nexus http://localhost:8072/nexus
ProxyPassReverse /nexus http://localhost:8072/nexus
ProxyPassReverseCookiePath / /nexus
RequestHeader set X-Forwarded-Proto "https"
ErrorLog logs/nexus_error_ssl.log
CustomLog logs/nexus_access_ssl.log common
# Jenkins via HTTPS.
ProxyPass / http://localhost:8071/ nocanon
ProxyPassReverse / http://localhost:8071/
ProxyPassReverse / http://my.host.com/
# also tested second ProxyPassReverse with specific port
ProxyPassReverseCookiePath / /
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyRequests Off
AllowEncodedSlashes NoDecode
SSLEngine on
答案 0 :(得分:1)
我不确定我的解决方案是否正确,因为我的同事找到了答案,而不是我。
由于Apache正确处理https(来自jenkins)(请求到达LDAP),但无法正确传递http信息(从LDAP进入)(登录无法)。
因此他查看了http设置并配置了启用http的设置。这导致了我们的目标 - &gt;我们现在可以登录,但它也会导致另一个问题 - &gt; http已启用并可供用户使用...
答案 1 :(得分:0)
在this页面上,它暗示您可能需要添加另一个ProxyPassReverse来修复Jenkins生成的http链接:
ProxyPassReverse / http://your.host.com:8095/
另外,它提到你应该添加
ProxyPreserveHost On
到你的配置。请查看链接以获取更多信息。