我似乎无法使用IIS为我的Jenkins正确设置反向代理。
一切正常,但是我无法使该消息消失!运行“ administrativeMonitor / hudson.diagnosis.ReverseProxySetupMonitor / testForReverseProxySetup”不会返回200 ..实际上是404。
我还使用了插件Blue Ocean,我注意到通过反向代理访问Jenkins时运行管道时,我看不到实时更新!我对此进行了研究,发现它通常是由于不良的Revery Proxy设置造成的。如果我通过本地主机访问jenkins,则可以看到Blue Ocean Pipeline实时更新,因此必须设置错误!
我得到的:
我已经设置了HTTPS,所以我的目标是:转到jenkins.example.com,它将重定向到https://jenkins.example.com,这反过来又是加载jenkins的反向代理。
我的web.config:
<?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教程通常会导致我出现登录问题(URL加倍,例如:example.com / https://example.com)
P.s,这是最新的Windows Server映像,是一个干净的基础版本。
我遍历了许多教程,但是没有任何解决方法解决此问题,非常感谢任何建议。
我还想指出,我有一台安装了Jenkins的服务器和IIS,可以在本地服务器上的localhost:7070上访问Jenkins。我还将服务器上的主机文件编辑为:
127.0.0.1 jenkins.example.com
jenkins.example.com是指向我服务器公共IP的实际子域/域。
因此,当我在本地服务器上ping:jenkins.domain.com时,它将返回127.0.0.1。如果我在该服务器(例如,在我的PC上)上执行ping操作,则会获得公共IP。
编辑:
答案 0 :(得分:0)
我刚刚花了6个小时来调试这一页,我希望如果像我那样可怜的灵魂找到此页,我的回答会有所帮助。情况与原始问题几乎相同,但是为了更全面,我将详细说明我的确切情况和确切的解决方案:
http
流量重定向到https
,但仅使用http
将请求转发到服务器。也就是说,用户始终使用https
连接到负载均衡器,而负载均衡器仅使用http
localhost:8080
上本地运行Jenkins jenkins.mydomain.com
反向代理为localhost:8080
,而不在IIS级别上配置SSL jenkins.mydomain.com/"http://jenkins.mydomain.com:80"
这是我解决问题的确切配置:
http
请求重定向到https
,并将https
请求转发到端口80上的EC2实例jenkins.mydomain.com
定向到您的应用程序负载平衡器的DNS 127.0.0.1 jenkins.mydomain.com
添加到您的主机文件中。如果已添加,请删除。Jenkins Rewrite
(.*)
{HTTP_HOST}
匹配.*jenkins.mydomain.com.*
http://localhost:8080{UNENCODED_URL}
http
到https
的重定向规则中添加。如果您有一个,我认为不会有任何伤害,但是不要像其他教程所建议的那样被认为很重要而被赶上。useOriginalURLEncoding
:False
loacalhost:8080
访问)中,管理Jenkins>配置系统https://jenkins.mydomain.com/
就是这样!这些步骤中的某些步骤(尤其是9和10)可能是不必要的,但是在到达我现在的位置的过程中,这些值已经设置好了,一旦开始工作,我就不想更改任何内容! / p>
同样,对我来说,主要的突破是启用“在响应头中反向重写主机”。
编辑:另外,顺便说一句,一旦一切正常,请随意点击Jenkins上的“禁用”按钮,警告您的反向代理配置被搞砸了。我认为这种情况以及为使其工作而产生的配置非常不标准,以至于詹金斯不承认它确实在工作。