您的反向代理设置似乎已损坏-Jenkins IIS
我似乎无法正确设置反向代理为我的詹金斯与IIS 一切正常,但我不能让这个信息消失!运行“administrativeMonitor/hudson.diagnosis.ReverseProxy设置监视器/TestForReverseProxy设置”不会返回200。。但实际上是404 我还使用了Blue Ocean插件,我注意到当通过反向代理访问Jenkins时运行管道时,我看不到实时更新!!我深入研究了这个问题,发现它通常来自一个糟糕的Revery代理设置。如果我通过localhost访问jenkins,我可以看到Blue Ocean Pipeline实时更新,所以一定是设置错误了 我得到的:您的反向代理设置似乎已损坏-Jenkins IIS,jenkins,iis,reverse-proxy,Jenkins,Iis,Reverse Proxy,我似乎无法正确设置反向代理为我的詹金斯与IIS 一切正常,但我不能让这个信息消失!运行“administrativeMonitor/hudson.diagnosis.ReverseProxy设置监视器/TestForReverseProxy设置”不会返回200。。但实际上是404 我还使用了Blue Ocean插件,我注意到当通过反向代理访问Jenkins时运行管道时,我看不到实时更新!!我深入研究了这个问题,发现它通常来自一个糟糕的Revery代理设置。如果我通过localhost访问jenk
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules useOriginalURLEncoding="false">
<!-- Enforces redirection of all HTTP traffic to HTTPS -->
<rule name="Enforce HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
<rule name="ReverseProxyToLocalJenkinsRule" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="on" />
</conditions>
<action type="Rewrite" url="http://jenkins.example.com:7070/{R:1}" />
<serverVariables>
<set name="X-Forwarded-Proto" value="https" />
<set name="X-Forwarded-Port" value="443" />
<set name="X-Forwarded-Host" value="{HTTP_HOST}" />
</serverVariables>
</rule>
</rules>
</rewrite>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>
<system.web>
<httpRuntime maxUrlLength="4096" />
</system.web>
</configuration>
其中jenkins.example.com是指向我的服务器的公共IP的实际子域/域
因此,当我在本地服务器上ping:jenkins.domain.com时。。它返回127.0.0.1。如果我在该服务器外ping,即在我的PC上,我将获得公共IP
编辑:
我已安装应用程序请求路由,下面是我的配置:
我花了6个小时调试这一页,我希望如果有人像我一样找到这一页,我的答案会有所帮助。与原始问题几乎相同的情况,但为了彻底起见,我将详细说明我的确切情况和我的确切解决方案:
- 我正在AWS EC2上运行Windows Server 2019数据中心
- 我的EC2实例位于一个应用程序负载平衡器下,它自动将所有
流量重定向到http
,但仅使用https
将请求转发到服务器。也就是说,用户始终使用http
连接到负载平衡器,但负载平衡器仅使用https
连接到服务器http
- 在那台服务器上,我在本地运行Jenkins,地址是
localhost:8080
- 我想将代理
转换为jenkins.mydomain.com
,而无需在IIS级别配置SSLlocalhost:8080
- 我已经阅读了Jenkins网站上的所有教程、其他类似“IIS Jenkins反向代理”教程的网站以及所有相关的StackOverflow文章。没有人解决了我的问题,大多数人希望您在IIS级别配置SSL证书
- 此外,我还收到了同样的神秘错误,URL加倍,如
jenkins.mydomain.com/”http://jenkins.mydomain.com:80“
- 具有安全策略的EC2实例,允许端口80上的传入连接
- 应用程序负载平衡器将
请求重定向到http
,并将https
请求转发到端口80上的EC2实例https
- 使用SSL证书配置的应用程序负载平衡器
- DNS配置为将
定向到应用程序负载平衡器jenkins.mydomain.com
127.0.0.1 jenkins.mydomain.com
添加到主机文件中。如果已添加,请将其删除- 启用代理:已选中
- 在响应头中反向重写主机:已选中
- 这与其他教程不同,最终是使我的设置正常工作的关键所在
- 允许双重转义:选中
- 姓名:
Jenkins重写
- 模式:
(.*)
- 条件:
匹配{HTTP\u HOST}
*jenkins.mydomain.com.*
- 服务器变量:无
- 操作:重写
http://localhost:8080{UNENCODED_URL}
http
到https
重定向规则。如果你有一个,我不认为它会伤害任何东西,但不要被认为这是重要的,因为其他教程建议
:useOriginalurEncoding
False
LoaclHost:8080
访问),管理Jenkins>配置系统- 詹金斯网址:
https://jenkins.mydomain.com/
- 启用代理兼容性:已选中
编辑:顺便说一句,一旦一切正常,就可以随意点击Jenkins上的“禁用”按钮,警告您的反向代理配置被弄乱了。我认为这种情况以及由此产生的使其工作的配置非常不标准,以至于Jenkins没有意识到它实际上正在工作。您是否为IIS安装了ARR?因为如果你有一个坏的反向代理,你应该收到50x错误而不是404错误。嗨@JokiesDing,我确实安装了应用程序请求路由。
127.0.0.1 jenkins.example.com