如何阻止 Jenkins 重定向到端口 8443?

时间:2021-03-30 09:48:01

标签: jenkins

我们在 8080 端口上有 SSL 证书,我们将公共端口 8080 绑定到本地端口 8080。但是,当登录 Jenkins 时,它重定向到端口 8443,得到“无法访问此页面”。

如何阻止这种重定向?

更新:

  1. 我检查了 Chrome 插件“链接重定向跟踪”,发现 url 中有以下变化:
<块引用>
https://ourdomain.com:8080

https://ourdomain.com:8080/login?from=%2F

https://ourdomain.com:8080/j_spring_security_check

https://ourdomain.com:8443
  1. 尽管登录重定向到 8443(无法访问此页面)。当我打开 8080 端口时,该帐户已登录。

更新 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?

1 个答案:

答案 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/

相关问题