Jenkins 在 HTTPS 反向代理之后不断重定向到 HTTP

Jenkins 在 HTTPS 反向代理之后不断重定向到 HTTP

我们已经在 Apache 反向服务器后面设置了 Jenkins,并使用 HTTPS。尽管 Jenkins 中的默认 Jenkins URL 设置为 https://... 并且 GUI 上的链接工作正常,但所有重定向(“302 Found”)都指向 HTTP,例如这里: 浏览器 我在这里找不到任何关于此问题的帖子。我们可能还遗漏了一些设置吗?

附录:这是我们正在使用的反向代理配置:

<VirtualHost _default_:8443>
SSLEngine On
SSLCertificateFile "C:/Portable/laragon/etc/ssl/abc-pub.pem"
SSLCertificateKeyFile "C:/Portable/laragon/etc/ssl/abc.pem"

<Directory "C:/Portable/laragon/www/">
    AllowOverride All
</Directory>

# https://wiki.jenkins.io/display/jenkins/running+jenkins+behind+apache
ProxyPass         /jenkins  http://localhost:8080/jenkins nocanon
ProxyPassReverse  /jenkins  http://localhost:8080/jenkins

ProxyRequests     Off
AllowEncodedSlashes NoDecode

# Local reverse proxy authorization override
# Most unix distribution deny proxy by default (ie /etc/apache2/mods-enabled/proxy.conf in Ubuntu)
<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>

答案1

更新:2024-04-23

与此同时,至少从 Jenkins 2.440.1 开始,只需设置

RequestHeader set X-Forwarded-Proto "https"

原始答案

我可以通过在 Apache 反向代理虚拟主机配置中添加以下语句来解决该问题:

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

这并不能解决 Jenkins 问题,但可以通过将 HTTP 请求重写为 HTTPS 来解决问题。

答案2

您可以尝试将Manage Jenkins> Configure System->设置Jenkins Location - Jenkins URL为您的 jenkins 的实际 url。

相关内容