Wil*_*iam 0 iis reverse-proxy jenkins
我似乎无法使用 IIS 为我的 Jenkins 正确设置反向代理。
一切正常,但我无法让该消息消失!运行“administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup”不会返回 200.. 但实际上返回 404。
我还使用插件 Blue Ocean,我注意到当通过反向代理访问 Jenkins 时运行管道时,我看不到实时更新!我对此进行了深入研究,发现它通常是由于错误的 Revery 代理设置造成的。如果我通过本地主机访问 jenkins,我可以看到 Blue Ocean Pipeline 实时更新,所以一定是设置错误!
我得到了什么:
我有 HTTPS 设置,所以我的目标是:转到 jenkins.example.com,它将重定向到https://jenkins.example.com,这又是加载 jenkins 的反向代理。
我的网络配置:
<?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>
Run Code Online (Sandbox Code Playgroud)
这似乎是我可以获得的最好的反向代理,遵循 jenkins 教程通常会导致我出现登录问题(URL加倍,即: example.com/ https://example.com)
PS,这是最新的 Windows 服务器映像,并且是一个干净的基础版本。
我浏览了很多教程,但没有解决这个问题,非常感谢任何建议。
我还想指出,我有一台安装了 Jenkins 和 IIS 的服务器,可以在服务器上本地通过 localhost:7070 访问 Jenkins。我还编辑了服务器上的主机文件:
127.0.0.1 jenkins.example.com
Run Code Online (Sandbox Code Playgroud)
其中 jenkins.example.com 是指向我服务器的公共 IP 的实际子域/域。
因此,当我在本地服务器上 ping: jenkins.domain.com 时......它返回 127.0.0.1。如果我在该服务器之外执行 ping 操作,即。在我的电脑上,我获得了公共IP。
编辑:
我刚刚花了 6 个小时调试这个页面,我希望如果有一些可怜的人像我一样找到这个页面,我的答案将会有所帮助。与原始问题几乎相同的情况,但为了彻底起见,我将详细说明我的确切情况以及我的确切解决方案:
http流量重定向到https,但仅使用将请求转发到服务器http。也就是说,用户始终使用 来连接到负载均衡器https,但负载均衡器仅使用httplocalhost:8080jenkins.mydomain.com而不localhost:8080在 IIS 级别配置 SSLjenkins.mydomain.com/"http://jenkins.mydomain.com:80"这是我解决问题的确切配置:
http请求重定向到https,并将https请求转发到端口 80 上的 EC2 实例jenkins.mydomain.com到您的 Application Load Balancer 的DNS127.0.0.1 jenkins.mydomain.com到您的主机文件中。如果您已添加,请将其删除。Jenkins Rewrite(.*){HTTP_HOST}比赛.*jenkins.mydomain.com.*http://localhost:8080{UNENCODED_URL}http重定向https规则。如果你有一个,我认为它不会造成任何伤害,但不要像其他教程所建议的那样认为这很重要。useOriginalURLEncoding:Falseloacalhost:8080在 Jenkins 中(您可能首先需要通过它访问),管理 Jenkins > 配置系统https://jenkins.mydomain.com/就是这样!其中一些步骤(尤其是第 9 步和第 10 步)可能是不必要的,但在达到我现在所在位置的过程中,这些值已经设置完毕,一旦开始工作,我就不想更改任何内容!
同样,对我来说主要的突破是启用“在响应标头中反向重写主机”。
编辑:另外,顺便说一下,一旦一切正常,请随意点击 Jenkins 上的“禁用”按钮,警告您的反向代理配置已混乱。我认为这种情况以及使其工作的最终配置非常不标准,以至于 Jenkins 没有意识到它实际上正在工作。
| 归档时间: |
|
| 查看次数: |
2071 次 |
| 最近记录: |