小编典典

Jenkins在Apache Server后面/无法登录Jenkins

jenkins

我正在运行一个Apache Server 2.2来处理Jenkins和SonaType Nexus信息(均安装为Windows
Service)。虽然SonatypeNexus可以完美运行,但詹金斯却不能。更具体地说:我无法登录詹金斯。请注意:我们正在使用LDAP登录,但这并不是登录失败的原因,因为从本地主机登录即可。

如果我尝试从Jenkins登录,localhost:8071效果会很好。

当我通过网络从另一个系统(使用https://myServer.com:8095/)登录时,我可以浏览和配置Jenkins,但无法登录。每当我尝试时,我都会被“重定向”到我所在的詹金斯页面,然后单击“登录”按钮。
安全设置设置为“每个人都可以做任何事情”->也不可能是原因。

提示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

阅读 287

收藏
2020-07-25

共1个答案

小编典典

我不确定我描述的解决方案是否正确,因为我的同事找到了答案,而不是我。

由于Apache正确处理了https(从jenkins传入)(请求已到达LDAP),但无法正确传递http信息(从LDAP传入)(无法登录)。

因此,他看了看http设置并配置了启用http的设置。这导致了我们的目标->我们现在可以登录, 同时也导致另一个问题->
http已启用并可供用户使用…

2020-07-25