tomcat 为什么Jenkins抱怨我的反向代理设置被破坏了?

vlf7wbxs  于 2023-04-30  发布在  Jenkins
关注(0)|答案(9)|浏览(301)

我不知道为什么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文件中
是Jenkins的窃听器吗

xqkwcwgp

xqkwcwgp1#

我在使用Jenkins作为Windows服务包时遇到了这个问题。
根据wiki
确保在系统配置中配置的Jenkins URL与您用于访问Jenkins的URL相匹配。
要进入系统配置:
1.转到您的Jenkins页面
1.单击管理Jenkins
1.单击配置系统
1.滚动到Jenkins Location,找到Jenkins URL。
确保端口值与jenkins的<arguments>部分中设置的端口值匹配。xml文件,位于计算机上的Jenkins文件夹中。

tgabmvqs

tgabmvqs2#

对我来说,解决办法是添加:

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

这让他停止了抱怨。

ioekq8ef

ioekq8ef3#

Jenkins具有主动监控功能,以确保正确配置转发和反向代理。在版本1中。552中,这些测试得到了改进,因此现在可以检测到以前未标记为损坏的不正确代理设置。从版本1开始。572,即使不依赖反向代理的Jenkins示例也会显示此警告。
修复损坏的反向代理配置高度依赖于您的Web服务器和Web应用程序容器,这就是为什么有这么多其他答案发布到您的问题。Jenkins Wiki关于这个主题的文章“Jenkins says my reverse proxy setup is broken“在评论中描述了几种修复此问题的方法。
从上面的文章:
要使反向代理正常工作,它需要重写请求和响应。
但正确的反向代理也涉及以下两种选择之一:
1.重写响应;或
1.在转发的请求上设置X-Forwarded-Host(可能还有X-Forwarded-Port)报头。
在我的例子中,这实际上是第一个选项的问题,我的响应重写没有正确地编码斜杠。如果您在Tomcat中使用Apache HTTPD,则需要为 * 两个 * 服务器添加对编码斜杠的支持,而不仅仅是Apache HTTPD。
以下是在我的特定情况下解决此问题的说明:Jenkins 2.1.41在Amazon Linux EC2示例上,使用Apache 2。4、Tomcat 8。5和Tomcat连接器。
/etc/httpd/conf.d/ssl.conf中,为Jenkins HostVirtualHost添加以下行:

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;
jhiyze9q

jhiyze9q4#

对于nginx,这也帮助了我:

proxy_redirect      http://localhost:8080 https://your.ssl.domain.name

不要在上面的url后面加上斜杠,也不要proxy_pass的url后面加上斜杠。

mdfafbf1

mdfafbf15#

事实证明,即使烦人的消息不断出现,一切都很正常。我认为这是版本的一个小bug。

w46czmvw

w46czmvw6#

这里的a link清楚地说明了在1之后有些东西被改变了。第552章增加这些新的东西

nocanon and AllowEncodedSlashes

解决了我的问题,警告消失了。

cvxl0en2

cvxl0en27#

它试图验证设置中指定的url与实际的url:
1.去管理Jenkins
1.配置系统

  1. jenkins URL
    1.将url更改为您的公共IP地址
    1.保存
eeq64g8w

eeq64g8w8#

如果你设置了一个Referrer-Policy头,它会删除“referer”头,也可以看看。该脚本由/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup/上的自测试XHR脚本使用。

2admgd59

2admgd599#

转到“管理Jenkins”-〉“配置系统”-〉“Jenkins位置”标题-〉“Jenkins URL”是“http://localhost:8081/jenkins-postly”。我把它改为“http://localhost:8081/”,现在我看不到这个错误。

相关问题