【发布时间】:2020-01-14 16:07:42
【问题描述】:
我似乎无法使用 IIS 为我的 Jenkins 正确设置反向代理。
一切正常,但我无法让该消息消失!运行“administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup”不会返回 200.. 但实际上是 404。
我也使用插件 Blue Ocean,我注意到当通过我的反向代理访问 Jenkins 时运行管道时,我看不到实时更新!我对此进行了深入研究,发现它通常来自错误的 Revery Proxy 设置。如果我通过 localhost 访问 jenkins,我可以看到 Blue Ocean Pipeline 实时更新,所以一定是设置错误!
我得到了什么:
- Windows Server 2019 数据中心
- IIS 10
我有 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 服务器映像,是一个干净的基础版本。
我浏览了许多教程,但没有任何解决此问题的方法,非常感谢任何建议。
我还想指出,我有一台安装了 Jenkins 和 IIS 的服务器,可以在本地服务器上的 localhost:7070 访问 Jenkins。我还在服务器上编辑了我的主机文件:
127.0.0.1 jenkins.example.com
jenkins.example.com 是一个实际的子域/域,指向我的服务器的公共 IP。
所以当我在本地服务器上 ping:jenkins.domain.com 时,它返回 127.0.0.1。如果我在该服务器之外 ping,即在我的 PC 上,我会获得公共 IP。
编辑:
【问题讨论】:
-
您是否为您的 IIS 安装了 ARR?因为如果你的反向代理不好,你应该收到 50x 错误而不是 404 错误。
-
嗨@JokiesDing,我确实安装了应用程序请求路由。检查我对问题的编辑。谢谢
标签: jenkins iis reverse-proxy