反向代理 - IIS

在您在服务器上拥有现有网站的情况下,您可能会发现运行IIS后面的Jenkins(或jenkins的servlet容器)有用,以便您可以将Jenkins绑定到您可能拥有的更大网站的一部分必威国际有限公司.本节讨论了这样做的一些方法。

请确保您将Jenkins httpListenAddress必威国际有限公司从默认的0.0.0.0更改为127.0.0.1,或者配置防火墙来阻止Jenkins绑定到的端口上的请求,否则任何iis级别的限制都可以通过直接访问Jenkins端口轻松绕过。

要求

示例用例

我在Windows Server 20必威国际有限公司12 R2服务器上有一个专门的Jenkins安装,具有常用名称VRT必威国际有限公司JENKINS01在Active Directory域中acme.example并且可以通过完全限定的域名访问vrt必威国际有限公司jenkins01.acme.example.此外,Jenkins在港口必威国际有限公司运行8080并已经倾听127.0.0.1而不是0.0.0,服务器有其他DNS名称:必威国际有限公司必威国际有限公司jenkins.acme.example

我想有一个IIS安装作为TLS/SSL终止反向代理。结合我们内部的Active Directory证书服务(ADCS,微软的证书颁发软件),这将使证书管理更容易,因为Windows可以配置为自动更新证书,IIS 8.5+证书重新绑定特性可以监听更新事件(其中包含新旧证书的指纹),并更新相关绑定以使用新证书。这将确保在初始手动请求之后,只有当IIS提供的证书上的备用主题名称集发生更改时,才需要手动更改TLS/SSL相关设置。

IIS只需要充当1)Jenkins的反向代理2)将非规范URL重定向到规范URL:必威国际有限公司https://必威国际有限公司jenkins.acme.example/

我已经安装IIS(8.5)角色使用添加角色和功能向导使用所有默认和以下非默认特性:

然后我安装了URL重写和应用程序请求路由。

配置时间

启用反向代理功能

  1. 在里面Internet信息服务(IIS)管理器单击vrtjenkins01服务必威国际有限公司器。

  2. 应用程序请求路由缓存

  3. 在里面行动面板点击服务器代理设置…

  4. 启用代理

  5. 禁用在响应头中反向重写主机

    1. 别担心,它会起作用的,只要照着其余的说明做就行了

  6. 设定响应缓冲阈值(KB)到0。

    1. 这有助于阻止Jenkin的重播页面上的HTTP 502错误。

  7. 应用(行动小组再一次)

TLS / SSL配置

超出范围,在这部分的其他内部有足够的教程。本教程的其余部分将假设它已被配置为您选择的浏览器可信赖的证书。

配置响应重写规则

  1. 去吧默认网站

  2. URL重写

  3. 在里面行动面板点击查看服务器变量......

  4. 添加以下未在服务器级定义的内容:

    1. 名称:HTTP_FORWARDED

  5. 点击回到规则

  6. 点击Add Rule(s)…

  7. 选择反向代理然后点击确定

  8. 输入必威国际有限公司jenkins.acme.example然后点击确定

  9. 打开刚刚创建的规则

  10. 状况添加:

    1. 条件输入:{CACHE_URL}

    2. 模式:^ (http | ws): / /

  11. 服务器变量添加:

    1. 名称:HTTP_FORWARDED价值:为= {REMOTE_ADDR}; = {LOCAL_ADDR};主机= " {HTTP_HOST} ";原型=“https”,替换:是的

      1. 必威国际有限公司Jenkins在码头,码头支持下运行RFC7239.,所以一切都应该很好。

  12. 根据行动变革:

    1. 重写URL\ {c:1} \:必威国际有限公司//jenkins.acme.example:8080 {UnEncoded_url}

      1. 请注意,端口号和开口卷绕括号之间没有斜线

    2. 消除检查从中附加查询字符串复选框

  13. 应用更改。

  14. 编辑C:\Windows\System32\drivers\etc\hosts必威国际有限公司jenkins.acme.example指向127.0.0.1.

    1. 在解析名称时,Windows将在查询主机文件之前检查名称是否是其自己的名称。这意味着添加vrt必威国际有限公司jenkins01或者vrt必威国际有限公司jenkins01.acme.example到主机文件不会有任何效果。

      1. 但是,在咨询DNS基础架构之前,将咨询hosts文件

正在为自己经历可怕的“似乎您的反向代理设置坏了。”错误

  1. https://必威国际有限公司jenkins.acme.example/configure

  2. 配置必威国际有限公司詹金斯网址https://必威国际有限公司jenkins.acme.example/保存更改

  3. 配置全局安全性和启用启用代理的兼容性如果您已经启用防止跨站请求伪造利用

  4. 转到https://jenk必威国际有限公司ins.acme.example/Manage

  5. 正如预期的那样,您仍然会遇到“似乎您的反向代理设置被破坏了。

    1. 如果在这一点上没有那个那一点,那就是非常奇怪的......无论如何都要继续。

  6. 右键单击配置系统链接并选择检查元素。

    1. 确保您仍然在管理页面上,因为您希望它将其作为推荐人

  7. 的值HREF.属性是AdministrativeMonitor / Hudson.Diagnosis.reverseProxySetupMonitor /测试

  8. 在新标签页中打开你刚刚更改的链接。

    1. 打开这个标签

  9. 观察“\ https://jenkins.a必威国际有限公司cme。例如/manage vs http:"错误,并沐浴在它的荣耀中

    1. 使用HTTP状态代码的白页是200表示一切都很好

      1. 如果你这样做,那么这很奇怪......无论如何都要继续。

修复错误

  1. 在IIS管理器得到应用程序池然后编辑DefaultAppPool所以这样.NET CLR版本没有托管代码

    1. 您可能会发现,对于您的设置,这是不必要的(据您所知),因为IIS将只充当TLS/SSL卸载反向代理,我们不需要它。

  2. 然后去遗址默认网站请求过滤而在行动面板中选择编辑功能设置…,打开允许doube逃脱

    1. 这是为了让IIS转发url如https://jenkins.acme.example必威国际有限公司/%2525到Jenkins,而不是显示IIS错误页面

  3. 最后,但并非最不重要的,去遗址默认网站配置编辑器并改变部分system.webServer /重写规则

  4. 现在您应该看到URL Rewrite 2.1属性Useoriginalurlencoding.列出,如果没有安装URL重写2.1使用x86或x64安装程序,而不是在重新启动后从这里的webpi一个和恢复。

  5. 改变Useoriginalurlencoding.错误的

    1. 在URL Rewrite 2.1声明中,这将改变{UNENCODED_URL}的值RFC3986并用于反向代理转发目的

    2. 原始的2.1行为。

  6. 刷新你应该保持打开的标签,或重新创建它。

    1. 再一次,花些时间沐浴在它的荣耀中

  7. 它现在应该是白色的,管理页面也不再抱怨!

继续配置IIS

有些东西你可能想要,但我就不讲了:

  • 超文本严格的传输安全标题

  • 从非典型URL重定向到规范URL(OK,Web.config示例中的类型涵盖了此问题)

  • X-UA兼容性标题,以便Internet Explorer 11(或9,或...)不会声称IE 7用于Intranet站点

  • 使用IIS Crypto配置密码套件

  • ...

一个工作web . config

web.config.

<?XML Version =“1.0”编码=“UTF-8”?><配置><修改><规则Useoriginalurlencoding.错误的><规则的名字canonicalhostnamerule2.stopProcessing真的><匹配URL.(。*)/><条件trackAllCaptures真的><添加输入{CACHE_URL}图案^(http | ws):///><添加输入{http_host}图案^必威国际有限公司詹金斯$ | ^詹金斯\ .acme \ .example |美元^ vr必威国际有限公司tjenkins01 $ | ^ vrtjenkins01 \ .acme \ .Example $/><行动类型重定向URL.{c:1} s:/必威国际有限公司/jenkins.acme.example {UnEncoded_url}AppendQueryString.错误的redirecttype.永恒的/><规则的名字canonicalhostnamerule1.stopProcessing真的><匹配URL.(。*)/><条件trackAllCaptures真的><添加输入{CACHE_URL}图案^(https | wss):///><添加输入{http_host}图案^必威国际有限公司 jenkins $ | ^ vrtjenkins01 $ |^ vr必威国际有限公司tjenkins01 \ .acme \ .example $/><行动类型重定向URL.{C: 1}: 必威国际有限公司/ / jenkins.acme.example {UNENCODED_URL}AppendQueryString.错误的redirecttype.永恒的/><规则的名字ReverseProxyInboundRule1stopProcessing真的><匹配URL.(。*)/><行动类型改写URL.{c:1}://必威国际有限公司jenkins.acme.example:8080 {Unencoded_url}AppendQueryString.错误的/>< serverVariables ><设置的名字HTTP_FORWARDED价值= {REMOTE_ADDR};by = {local_addr};主机=“;{http_host}“;原型=“;https.“;/><条件trackAllCaptures真的><添加输入{CACHE_URL}图案^ (http | ws): / //><添加输入{http_host}图案^必威国际有限公司詹金斯\ .acme \ .example $/>< /重写><安全>allowDoubleEscaping真的/>安全> < /< / system.webServer >> < /配置


此页面有用吗?

请通过此提交您关于此页面的反馈快速形式

或者,如果您不希望填写快速表格,您可以简单地指示您是否找到此页面有用吗?

是的


这里.