我们在 8080 端口上有 SSL 证书,我们将公共端口 8080 绑定到本地端口 8080。但是,当登录 Jenkins 时,它重定向到端口 8443,得到“无法访问此页面”。
如何阻止这种重定向?
更新:
https://ourdomain.com:8080
https://ourdomain.com:8080/login?from=%2F
https://ourdomain.com:8080/j_spring_security_check
https://ourdomain.com:8443
更新 2:
我对8443端口号从何而来感到疑惑,于是搜索了Jenkins的源码:
在jenkins/core/src/test/java/jenkins/model/JenkinsGetRootUrlTest.java
在第 162 - 165 行的函数 useForwardedProtoWithIPv6WhenPresent
中
accessing("http://[::1]:8080/jenkins/");
withHeader("X-Forwarded-Proto", "https");
withHeader("X-Forwarded-Host", "[::1]:8443");
rootUrlFromRequestIs("https://[::1]:8443/jenkins/");
Jenkins 似乎认为我们正在使用 IPv6。我试着关掉
负载均衡器中的 X-Forwarded-Proto
标头,现在登录将重定向到正确的端口 8080。但是,在 Jenkins 配置页面中,它提示 It appears that your reverse proxy set up is broken.
我不知道这是否很关键。为什么 Jenkins 认为我们使用的是 IPv6?
答案 0 :(得分:0)
我怀疑这是因为 Jenkins 默认在端口 8080 上运行 HTTP,在端口 8443 上运行 HTTPS。因此,在登录时,Jenkins 将请求视为 HTTPS,并将其传递到其配置的 HTTPS 端口。 您可能需要使用选项运行 Jenkins
--httpPort=-1 --httpsPort=8080
-1 将禁用 http,然后它将 8080 绑定到 HTTPS。
(注意我没有测试台来尝试这个,但从文档来看应该没问题https://www.jenkins.io/doc/book/installing/initial-settings/)