我不知道为什么在Jenkins更新到版本1.591(Ubuntu Server 12.04)之后,原来正确设置的反向代理现在变坏了。我目前的设置与Jenkins wiki中说的完全相同:
ProxyPass /jenkins http://localhost:8081/jenkins nocanon
ProxyPassReverse /jenkins http://localhost:8081/jenkins
ProxyPreserveHost On
ProxyRequests Off
AllowEncodedSlashes NoDecode
<Proxy http://localhost:8081/jenkins*>
Order deny,allow
Allow from all
</Proxy>
--prefix=/jenkins
已添加到/etc/default/jenkins
文件
这是詹金斯的错误吗?
答案 0 :(得分:30)
我将Jenkins作为Windows服务包遇到了这个问题。
根据他们的wiki:
确保系统配置中配置的Jenkins URL与您用于访问Jenkins的URL匹配。
进入系统配置:
确保端口值与计算机上Jenkins文件夹中 jenkins.xml 文件的<arguments>
部分中设置的端口值匹配。
答案 1 :(得分:5)
事实证明,即使烦人的消息持续出现,一切也能正常工作。我认为这是该版本的一个小错误。
答案 2 :(得分:5)
对我来说,修复是添加:
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
这使它停止抱怨。
答案 3 :(得分:2)
答案 4 :(得分:2)
Jenkins具有主动监视功能,以确保正确配置了正向和反向代理。在版本1.552中,对这些测试进行了改进,以便现在可以检测到以前未标记为已损坏的不正确的代理设置。从1.572版开始,即使不依赖反向代理的Jenkins实例也将显示此警告。
解决损坏的反向代理配置在很大程度上取决于您的Web服务器和Web应用程序容器,这就是为什么在您的问题中还有这么多其他答案的原因。詹金斯Wiki上有关该主题的文章“ Jenkins says my reverse proxy setup is broken”描述了几种在注释中解决此问题的方法。
来自以上文章:
要使反向代理正常工作,它需要重写两个 请求和响应。
但是正确的反向代理还涉及以下两个选项之一:
- 重写响应;或
- 在转发的请求上设置X-Forwarded-Host(或者X-Forwarded-Port)标头。
就我而言,这实际上是第一个选项的问题,其中我的响应重写未正确编码斜杠。如果您将Apache HTTPD与Tomcat一起使用,则需要为两个服务器(不仅是Apache HTTPD)添加对编码斜杠的支持。
这些是在我的特定情况下解决此问题的说明:具有Apache 2.4,Tomcat 8.5和Tomcat连接器的Amazon Linux EC2实例上的Jenkins 2.1.41。
在/etc/httpd/conf.d/ssl.conf
中为您的詹金斯Host
或VirtualHost
添加以下行:
AllowEncodedSlashes NoDecode
将以下行添加到/usr/share/tomcat8/conf/catalina.properties
:
org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
重新启动两个服务:
service httpd restart
service tomcat8 restart
刷新您的Manage Jenkins页面。警告消息将消失。
在Apache HTTPD中实现第二个选项的示例:
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
,对于NGINX:
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
答案 5 :(得分:0)
对于nginx,这也对我有所帮助:
proxy_redirect http://localhost:8080 https://your.ssl.domain.name
不要包含上述网址的任何尾部斜杠,而也不包含proxy_pass
网址。
答案 6 :(得分:0)
如果您设置Referrer-Policy标头以删除“ referer”标头,也可以看看。该文件供/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup/
处的自检XHR脚本使用。
答案 7 :(得分:-1)
它正在尝试使用实际的网址验证设置中指定的网址: