You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

IIS URL Rewrite:路径转端口及CI服务HTTPS反向代理配置问询

我刚帮公司完成了类似的配置,用IIS做反向代理把多个CI/CD服务从HTTP转成HTTPS路径映射,完全可行,给你一步步讲怎么实现:

整体方案概述

我们要利用IIS的URL Rewrite和**Application Request Routing (ARR)**模块,完成三件核心事:

  1. 把所有HTTP请求强制跳转至HTTPS
  2. 将不同的URL路径映射到后端对应服务的端口/路径
  3. 确保每个服务能识别新的HTTPS Base URL,避免内部链接出错
前置准备

先把基础环境搭好:

  • 确保IIS已经安装了URL Rewrite 2.0ARR 3.0模块(可以通过IIS管理器的「管理」菜单里的「Web平台安装程序」搜索安装)
  • 申请并绑定SSL证书到IIS的目标站点(域名server.company.com,端口443)
  • 启用ARR反向代理:打开IIS管理器 → 点击服务器节点 → 找到Application Request Routing → 点击「Server Proxy Settings」 → 勾选「Enable proxy」 → 保存
  • 确认后端的TeamCity、YouTrack、Octopus服务能被IIS服务器访问(本地部署的话用localhost+端口即可)
具体配置步骤

1. 强制HTTP转HTTPS(优先级最高)

先加一个跳转规则,确保所有用户访问HTTP时自动转到HTTPS:

  • 打开IIS站点 → 点击URL Rewrite → 右侧「Add Rule(s)」 → 选择「Blank Rule」
  • 规则名称:Redirect-HTTP-to-HTTPS
  • 匹配URL:
    • 模式:(.*)
    • 使用:正则表达式
  • 条件:
    • 添加条件 → 输入{HTTPS} → 匹配类型「Matches the Pattern」 → 模式off
  • 动作:
    • 动作类型:Redirect
    • 重定向URL:https://{HTTP_HOST}/{R:1}
    • 重定向类型:301 Permanent(永久跳转,利于缓存和用户体验)
    • 勾选「Append query string」
  • 点击「Apply」保存

2. TeamCity 映射(HTTPS根路径 → HTTP 80端口)

因为TeamCity原本就用根域名,我们把HTTPS的根路径转发到后端的HTTP服务:

  • 新增空白规则,名称:Rewrite-TeamCity
  • 匹配URL:
    • 模式:(.*)
    • 使用:正则表达式
  • 条件:
    • 添加条件 → {REQUEST_URI} → 匹配类型「Does Not Match the Pattern」 → 模式^/(youtrack|octopus)(排除YouTrack和Octopus的路径,避免冲突)
  • 动作:
    • 动作类型:Rewrite
    • 重写URL:http://localhost/{R:1}(如果后端服务不在本机,替换成服务器内网IP)
    • 勾选「Append query string」和「Stop processing of subsequent rules」(避免被后面的规则干扰)
  • 保存规则

3. YouTrack 映射(HTTPS /youtrack → HTTP 1234端口)

https://server.company.com/youtrack开头的请求转发到后端的YouTrack服务:

  • 新增空白规则,名称:Rewrite-YouTrack
  • 匹配URL:
    • 模式:^youtrack/(.*)
    • 使用:正则表达式
  • 动作:
    • 动作类型:Rewrite
    • 重写URL:http://localhost:1234/{R:1}
    • 勾选「Append query string」
  • 保存后,必须修改YouTrack的Base URL
    打开YouTrack管理后台 → 找到「Settings」→「Global Settings」→「Base URL」,设置为https://server.company.com/youtrack,重启YouTrack生效

4. OctopusDeploy 映射(HTTPS /octopus → HTTP 5678/octopus)

对应原Octopus的路径,我们转发到后端的端口路径:

  • 新增空白规则,名称:Rewrite-Octopus
  • 匹配URL:
    • 模式:^octopus/(.*)
    • 使用:正则表达式
  • 动作:
    • 动作类型:Rewrite
    • 重写URL:http://localhost:5678/octopus/{R:1}
    • 勾选「Append query string」
  • 保存后,修改Octopus的Base URL
    打开Octopus管理后台 →「Configuration」→「Nodes」→ 找到你的服务器 → 编辑「Server URI」为https://server.company.com/octopus,重启Octopus服务
验证与常见坑点
  • 测试访问:
    • https://server.company.com → 应该打开TeamCity
    • https://server.company.com/youtrack → 打开YouTrack
    • https://server.company.com/octopus → 打开OctopusDeploy
  • 常见问题:
    • 内部链接还是跳转到原端口/HTTP:检查服务的Base URL是否配置正确,这是最容易踩的坑
    • 代理后服务无法访问:检查ARR的代理设置是否启用,IIS应用池账户是否有访问后端服务的权限(可以尝试给应用池账户加本地管理员权限测试,之后再缩小权限)
    • 规则不生效:检查规则顺序,强制HTTPS的规则要排在最前面,TeamCity规则次之,然后是YouTrack和Octopus

内容的提问来源于stack exchange,提问作者Kira Resari

火山引擎 最新活动