基于IIS 8、ARR及URL Rewrite搭建单服务器后端应用反向代理
实现第二个应用的HTTPS反向代理(IIS 8 + ARR + URL Rewrite)
结合你描述的现有环境——已经装好了ARR和URL Rewrite,有个绑定443端口、用第二个应用证书的空站点,第一个应用已经搞定HTTPS,第二个跑在80端口只能HTTP——咱们直接动手配置反向代理:
1. 先确认ARR的反向代理功能是开启的
打开IIS管理器,先选中服务器节点(不是你的那个空站点),然后找到Application Request Routing Cache双击进去。右边操作栏点Server Proxy Settings,把Enable proxy勾上,点Apply保存。这一步是给ARR“开门”,让它具备反向代理的基础能力。
2. 给空站点添加反向代理规则
找到你那个绑定443的空站点,双击URL Rewrite:
- 右侧点击
Add Rule(s),选择Reverse Proxy,点击OK - 弹出的对话框中,输入第二个应用的地址:
http://localhost:80(如果应用绑定了特定IP,就换成对应IP,比如http://192.168.x.x:80) - 一定要勾选
Enable SSL Offloading!这个选项会帮你把HTTPS请求解密后转发给后端的HTTP应用,同时还会把HTTPS相关的请求头传给后端,避免应用识别请求协议错误 - 点击
OK,IIS会自动生成对应的重写规则
3. (可选)多域名区分时添加条件规则
如果两个应用需要通过不同域名共享443端口访问(比如app1.yourdomain.com和app2.yourdomain.com),得给规则加个域名条件避免冲突:
- 在URL Rewrite的规则列表里找到刚生成的规则,点击
Edit - 切换到
Conditions标签,点击Add - 条件输入
{HTTP_HOST},匹配类型选择Matches the Pattern,模式写第二个应用域名的正则表达式(比如^app2\.yourdomain\.com$),匹配方式选Regular Expressions - 这样只有访问该域名的HTTPS请求才会转发到第二个应用的80端口
4. 验证配置效果
- 重启一下绑定443的空站点(保险起见,确保规则完全生效)
- 用浏览器访问
https://你的第二个应用域名,应该能正常打开应用,且地址栏的HTTPS锁标正常显示 - 要是遇到问题,可以开启IIS的
Failed Request Tracing,或者查看ARR的日志,排查是否是转发路径错误、后端应用未正常运行等原因
常见问题排查
- 502错误:先检查第二个应用是否真的在80端口运行,ARR服务器能否正常访问
http://localhost:80,本地防火墙是否拦截了端口访问 - 证书不生效:确认空站点的443绑定确实使用了第二个应用的证书,证书域名要和访问域名匹配,且证书未过期
- 后端拿不到客户端IP:回到ARR的代理设置,勾选
Enable client IP address preservation,后端应用就能通过X-Forwarded-For头获取真实客户端IP
内容的提问来源于stack exchange,提问作者user6329667
相关产品推荐
相关产品推荐

