咨询热线:4006-75-4006
售前:9:00-23:30 备案:9:00-18:00 技术:7*24h
Application Request Routing (ARR) 是 Microsoft IIS (Internet Information Services) 的一个扩展模块。它主要用于实现以下功能:
反向代理 (Reverse Proxy):将客户端请求转发到后端的其他服务器(如 Node.js, Tomcat, Docker 容器等)。
负载均衡 (Load Balancing):将流量分发到多个后端服务器,提高系统可用性和性能。
输出缓存 (Output Caching):缓存动态内容,减少后端压力。
健康监控 (Health Monitoring):自动检测后端服务器状态,剔除故障节点。
本教程将指导你在 Windows Server 上安装并基础配置 ARR。
在开始之前,请确保你的服务器满足以下条件:
操作系统:Windows Server 2012 R2 / 2016 / 2019 / 2022。
IIS 服务:必须已经安装并运行 IIS。
检查方法:运行 inetmgr 看能否打开 IIS 管理器。
管理员权限:你需要拥有服务器的 Administrator 权限。
依赖模块:
URL Rewrite Module 2.0+:ARR 通常依赖此模块来处理重写规则(安装 ARR 时通常会自动检测或提示安装,建议先确认已安装)。
访问 Microsoft 官方下载页面(或搜索 "Microsoft Application Request Routing 3.0 download")。
推荐版本:ARR 3.0
下载地址:通常在 Microsoft 官网的 IIS 扩展页面。
选择适合你系统架构的版本(通常是 amd64)。
双击下载的 .msi 安装包(例如 requestRouter_3.0_amd64.msi)。
点击 Next。
接受许可协议 (I Accept)。
选择安装路径(默认即可),点击 Next。
点击 Install 开始安装。
安装完成后,点击 Finish。
注意:安装过程中如果提示缺少 "URL Rewrite Module",请先去下载并安装 URL Rewrite 模块,然后再安装 ARR。
安装完成后,ARR 不会自动生效,需要进行配置。
按 Win + R,输入 inetmgr,回车。
在左侧连接面板中,点击最顶层的服务器节点(即机器名称,不要点击具体的网站)。
这是实现反向代理最关键的一步。
在中间的功能视图中,找到并双击 Application Request Routing Cache 图标。
在右侧的 Actions (操作) 面板中,点击 Server Proxy Settings... (服务器代理设置)。
在弹出的窗口中:
勾选 Enable proxy (启用代理)。
(可选) 勾选 Enable SSL Offloading (如果你需要在 ARR 层终止 HTTPS)。
(可选) 设置 Disk Cache 参数以启用缓存。
点击 Apply (应用)。
安全警告:启用代理后,你的服务器将允许转发请求到任意内部地址。请务必在防火墙和 IIS 请求过滤中做好安全限制,防止服务器被当作开放中继使用。
假设你有一个运行在 localhost:3000 的 Node.js 应用,你想通过 IIS 的 80 端口访问它。
确保已安装 URL Rewrite 模块。
在 IIS 管理器左侧,点击你要配置的具体 网站 (Site)。
双击 URL Rewrite 图标。
在右侧点击 Add Rule(s)... -> 选择 Blank rule (空白规则) -> OK。
配置规则:
Action type: Rewrite
URL: http://www.landui.com:3000/{R:0}
勾选 Append query string。
Requested URL: Matches Pattern
Using: Wildcards (或 Regular Expressions)
Pattern: * (匹配所有)
Name: ReverseProxyToNode
Match URL:
Conditions (可选): 留空或根据需要添加。
Action:
点击右侧 Apply。
重要:在反向代理中,通常需要保留原始 Host 头。在 URL Rewrite 主界面右侧,点击 View Server Variables,确保 HTTP_HOST, SERVER_NAME 等允许被设置。
如果你有多个后端服务器(例如 192.168.1.10 和 192.168.1.11)。
在 IIS 管理器左侧,右键点击服务器节点(机器名)。
选择 Add Server Farm...。
输入农场名称 (例如 MyWebFarm),点击 Next。
添加服务器:输入后端服务器的 IP 或域名,点击 Add,可添加多个。点击 Next。
健康测试 (Health Test):
建议启用 Enable Health Test。
设置测试间隔和阈值(例如每 5 秒请求一次 /health 接口)。
点击 Finish。
绑定到网站:
创建好 Server Farm 后,回到你的 网站 (Site)。
打开 URL Rewrite。
添加规则,Action 类型选择 Route to Server Farm,然后选择刚才创建的 MyWebFarm。
使用浏览器或 Postman 访问你的 IIS 地址。如果配置正确,你应该能看到后端应用返回的内容,但浏览器地址栏显示的是 IIS 的地址。
ARR 默认会记录转发日志,用于排查问题。
日志位置:通常在 %SystemDrive%\\inetpub\\logs\\logfiles\\W3SVC1\\ 下,或者在 IIS 日志中查看。
在 IIS 日志中,sc-substatus 字段可能会显示 ARR 相关的状态码。
你也可以在 Application Request Routing Cache 设置中启用详细的日志记录。
502 Bad Gateway:
检查后端服务是否正在运行。
检查防火墙是否允许 IIS 服务器访问后端端口。
检查 web.config 中的重写规则 URL 是否正确。
无限重定向循环:
通常是因为后端应用也试图将 HTTP 重定向到 HTTPS,而 ARR 配置了 SSL 卸载。需要在后端应用中信任 ARR 发送的 X-Forwarded-Proto 头。
获取客户端真实 IP:
默认情况下,后端应用看到的 IP 是 ARR 服务器的 IP。
ARR 会自动添加 X-Forwarded-For 头。后端应用需要配置为读取该头来获取用户真实 IP。
性能优化:
如果流量大,建议在 Application Request Routing Cache 中调整 Disk Cache 和 Memory Cache 的大小。
调整 Time to Live (TTL) 设置。
安装 ARR 只是第一步,核心在于理解 反向代理 和 服务器场 (Server Farm) 的概念。
对于简单的单应用代理,使用 URL Rewrite 配合 Enable Proxy 即可。
对于高可用集群,使用 Server Farm 功能。
配置完成后,建议在生产环境前进行充分的压力测试和安全扫描。