![Jenkins ajax 调用使用了错误的端口](https://linux22.com/image/726489/Jenkins%20ajax%20%E8%B0%83%E7%94%A8%E4%BD%BF%E7%94%A8%E4%BA%86%E9%94%99%E8%AF%AF%E7%9A%84%E7%AB%AF%E5%8F%A3.png)
我安装了 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)。