Jenkins ajax 调用使用了错误的端口

Jenkins ajax 调用使用了错误的端口

我安装了 jenkins,想将默认端口从 8080 更改为 443。我已经成功了,但是当进入 Jenkins 设置时,系统抱怨反向代理配置不正确,当我查看时,我发现 jenkins 正在尝试通过 ajax 调用 8080 端口上的 URL,这显然会导致 404

我正在使用 apache,这是我使用的配置。

ServerName jenkins.mydomain.com
SSLCertificateFile /etc/letsencrypt/live/jenkins.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/jenkins.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

ProxyRequests     Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Proxy http://localhost:8080*>
        Order deny,allow
        Allow from all
</Proxy>
ProxyPass         /  http://localhost:8080/ nocanon
ProxyPassReverse  /  http://localhost:8080/
ProxyPassReverse  /  http://jenkins.mydomain.com
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

有人知道我在这里遗漏了什么吗?

答案1

这通常是因为您没有在全局 Jenkins 配置中设置 Jenkins URL。Jenkins 配置中的“Jenkins URL”值应与用户在浏览器的 URL 栏中输入以访问 Web UI 的 URL 相匹配 - 在您给出的示例中,该值为https://jenkins.mydomain.com

Jenkins 会将“Jenkins URL”的值添加到所有 AJAX 调用的前面。如果未设置 Jenkins URL,则默认为类似于的内容http://${hostname}:${port},其中hostname是 Jenkins 正在运行的系统的主机名,port是 Jenkins 正在运行的端口(在您的例子中为 8080)。

Stack Overflow 上也有类似的答案。

相关内容