我正在运行一个Apache Server 2.2来处理Jenkins和SonaType Nexus信息(均安装为Windows Service)。虽然SonatypeNexus可以完美运行,但詹金斯却不能。更具体地说:我无法登录詹金斯。请注意:我们正在使用LDAP登录,但这并不是登录失败的原因,因为从本地主机登录即可。
如果我尝试从Jenkins登录,localhost:8071效果会很好。
localhost:8071
当我通过网络从另一个系统(使用https://myServer.com:8095/)登录时,我可以浏览和配置Jenkins,但无法登录。每当我尝试时,我都会被“重定向”到我所在的詹金斯页面,然后单击“登录”按钮。 安全设置设置为“每个人都可以做任何事情”->也不可能是原因。
https://myServer.com:8095/
提示0: 您可能已经注意到,对于外部专用于服务器的任何请求,我们都使用https。但是在服务器内部,Apache仅使用http来处理信息->这会导致问题吗?
提示1: 我仅使用正确的登录参数进行“重定向”。使用错误的密码会导致我看到“无效的登录信息。请重试。” 页。
提示2: Sonatype Nexus在同一Apache Server后面运行,并且运行良好。
潜在原因: 猜测我可以通过localhost登录但不能通过网络登录的原因一定是我们的Apache 2.2服务器,该服务器处理信息错误。通过使用本地主机,我可以绕过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
我不确定我描述的解决方案是否正确,因为我的同事找到了答案,而不是我。
由于Apache正确处理了https(从jenkins传入)(请求已到达LDAP),但无法正确传递http信息(从LDAP传入)(无法登录)。
因此,他看了看http设置并配置了启用http的设置。这导致了我们的目标->我们现在可以登录, 但 同时也导致另一个问题-> http已启用并可供用户使用…