You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何逐个将IIS应用迁移至VM上的Docker容器且保留原有URL路由

实现方案:不修改URL的前提下混合IIS与Docker部署

要在保留原有URL路由的同时,将单个Web API(如app3)迁移至Docker容器,核心思路是在IIS中添加反向代理规则,把针对/app3的请求转发到本地运行的Docker容器,其余路径仍由IIS处理。具体步骤如下:

1. 部署app3的Docker容器

  • 确保app3的Docker镜像已构建完成,镜像中的应用以根路径(/)处理请求(如果原app3在IIS中是虚拟应用,需调整容器内的路由配置,使其能接收不带/app3前缀的请求)。
  • 在客户VM上启动容器,绑定本地回环地址的端口(避免直接暴露外网):
    docker run -d -p 127.0.0.1:8083:80 --name app3-container your-app3-image:latest
    
    这里8083是VM本地的端口,80是容器内应用监听的端口,可根据实际情况调整。
  • 测试容器连通性:在VM本地访问http://127.0.0.1:8083/catalogs,确认app3能正常响应。

2. 配置IIS反向代理(依赖ARR与URL Rewrite)

  • 先在IIS服务器上安装Application Request Routing (ARR) 和URL Rewrite模块(均为微软官方工具,可通过IIS管理器的“模块”功能安装)。
  • 打开对应客户子域名的IIS网站,添加URL重写规则:
    1. 规则名称:Route app3 to Docker Container
    2. 匹配URL:
      • 模式:^app3/(.*)(正则表达式,捕获/app3后的所有路径)
      • 忽略大小写:勾选
    3. 操作设置:
      • 操作类型:反向代理
      • 重写URL:http://127.0.0.1:8083/{R:1}({R:1}对应捕获的路径部分,比如catalogs)
      • 勾选“启用反向代理”,并确保ARR的代理设置允许访问本地回环地址。
  • 删除IIS中原有的app3虚拟应用,避免路径冲突。

3. 验证与调试

  • 访问原URL https://OurAmazingCustomer.OurCleverDomain.com/app3/catalogs,检查响应是否来自Docker容器。
  • 测试其他路径(如/app1/customers、/app2/orders),确认仍由IIS正常处理。
  • 若出现问题,可查看IIS的URL Rewrite日志和Docker容器的应用日志排查。

4. 额外优化建议

  • 容器健康检查:给Docker容器添加健康检查规则,确保app3服务正常运行:
    docker run -d -p 127.0.0.1:8083:80 --name app3-container --health-cmd "curl -f http://localhost/catalogs || exit 1" --health-interval 30s your-app3-image:latest
    
  • 日志统一:将IIS日志与Docker容器日志汇总到同一日志系统,方便问题排查。
  • SSL处理:IIS已负责HTTPS的SSL终止,容器内无需配置证书,只需处理HTTP请求即可。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:35:49