我们已经在 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。