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

如何在IIS中基于客户端IP转发请求至不同端口的.NET WebService

实现方案

完全可以通过IIS的URL重写和应用程序请求路由(ARR)模块实现这个需求,具体步骤如下:

1. 安装必要的IIS模块

  • 打开服务器管理器,通过「添加角色和功能」向导,在「Web服务器(IIS)→角色服务」中勾选URL重写并完成安装。
  • 安装应用程序请求路由(ARR):通过IIS的「Web平台安装器」搜索“Application Request Routing”进行安装,或直接从Windows服务器组件库获取。

2. 启用ARR代理功能

  • 打开IIS管理器,点击左侧的服务器节点,在功能视图中找到应用程序请求路由。
  • 右侧操作栏点击「服务器代理设置」,勾选启用代理选项,点击「应用」保存配置。

3. 配置基于客户端IP的重写规则

假设你的正式WebService部署在目标站点,测试服务部署在同一VM的8080端口(可替换为你的实际端口):

  • 进入正式服务所在的站点,在功能视图中打开URL重写。
  • 点击右侧「添加规则」,选择「空白规则」,按以下配置:
    • 规则名称:自定义(比如“Forward to TestService for Approved IPs”)
    • 匹配URL:
      • 请求路径:「匹配模式」选择「正则表达式」,输入.*(匹配所有请求路径)
    • 条件:
      • 点击「添加」,设置:
        • 条件输入:{REMOTE_ADDR}
        • 检查输入字符串:「匹配输入字符串的模式」
        • 模式:输入允许访问测试服务的客户端IP正则,比如单个IP写^192\.168\.1\.100$,多个IP用^(192\.168\.1\.100|192\.168\.1\.101)$,IP段可按需编写正则
    • 操作:
      • 操作类型:选择「重写」
      • 重写URL:输入http://localhost:8080{R:0}({R:0}会保留原请求的完整路径,确保API路由一致)
      • 勾选「停止处理后续规则」

4. 验证效果

  • 使用指定IP的客户端发起API调用,查看测试服务的日志确认请求是否到达;
  • 使用其他IP的客户端调用,确认请求仍路由到正式服务。

关于计算机名匹配的补充

如果需要基于客户端计算机名路由,可将条件输入改为{REMOTE_HOST},并编写对应计算机名的正则模式。但注意IIS需要启用反向DNS解析才能正确获取REMOTE_HOST,可靠性不如IP匹配,优先推荐使用IP规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:35:21