IIS 8 域名与URL重写配置求助及ARR安装后502.2错误排查
解决ARR URL重写与502.2错误问题
看起来你在ARR反向代理的URL重写配置上碰到了麻烦,还出现了502.2的错误,我来帮你梳理正确的配置和排查步骤:
一、正确的URL重写规则
首先,你需要把规则补全,针对你的需求,完整的规则应该是这样的:
<rule name="test-domain" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^somedomain\.com$" /> </conditions> <action type="Rewrite" url="https://serverdomain.com/applications/somedomain/{R:1}" /> </rule>
规则细节说明:
<match url="(.*)" />:会匹配请求URL里的所有内容,包括空路径(也就是用户访问根目录http://somedomain.com/的情况)<add input="{HTTP_HOST}" pattern="^somedomain\.com$" />:确保只有访问somedomain.com的请求才会触发这条规则,避免影响其他域名<action type="Rewrite" url="..." />:这里的{R:1}会自动把原URL里的路径内容(比如用户访问somedomain.com/page1,{R:1}就是page1)追加到目标路径后,完全符合你要的路径同步需求
二、排查502.2错误的关键步骤
502.2错误本质是ARR没法正常连接到后端的serverdomain.com,你可以按以下步骤逐个排查:
1. 确认ARR代理功能已开启
- 打开IIS管理器,找到你的服务器节点,在功能视图里找到Application Request Routing Cache
- 双击进去后,点右侧的Server Proxy Settings,勾选Enable proxy,然后点应用。这步很关键,很多人忘开导致代理失效。
2. 检查后端服务器是否能访问
- 在部署ARR的那台服务器上,直接用浏览器或者命令行工具(比如
curl)访问https://serverdomain.com/applications/somedomain/,看看能不能正常打开内容。 - 如果访问失败,大概率是网络问题:比如防火墙挡住了443端口,或者后端服务器没开机,又或者后端的SSL证书有问题(比如自签名证书不被信任)。
3. 处理SSL证书信任问题
如果后端用的是自签名或者内部CA发的证书,ARR默认会拒绝连接,你可以这么处理:
- 回到ARR的Server Proxy Settings页面,找到SSL Offloading部分,勾选Enable SSL offloading,同时勾选Accept invalid client certificates(这个只适合测试环境,生产环境建议把后端证书导入到ARR服务器的受信任根证书库)。
4. 用Failed Request Logging找具体原因
你已经装了FRL,现在要正确配置它抓错误日志:
- 右键你的网站,选Failed Request Tracing Rules,点Add,设置跟踪的状态码为
502.2,完成配置后再触发一次错误。 - 日志默认存在
%SystemDrive%\inetpub\logs\FailedReqLogFiles里,打开日志能看到详细的失败原因,比如是证书验证失败,还是连接超时,一目了然。
三、额外的小提示
- 确保你的网站已经绑定了
somedomain.com的80端口(HTTP协议),毕竟用户是通过http://somedomain.com访问的。 - 如果后端服务器需要知道原请求的主机头,可以在
<action>标签里加preserveHost="true",比如:<action type="Rewrite" url="https://serverdomain.com/applications/somedomain/{R:1}" preserveHost="true" /> - 确认IIS的URL Rewrite模块已经正确安装,ARR是依赖这个模块来处理重写规则的。
内容的提问来源于stack exchange,提问作者Dominik Szymański




