如何配置IIS实现网站路径到本地游戏服务器的反向代理
解决IIS+ARR反向代理多路径映射问题
针对你遇到的IIS反向代理路径不匹配、重定向循环及FRT失效问题,以下是分步解决方案:
1. 修正URL重写规则(核心解决循环与404)
现有规则未处理反向代理的内部循环触发,且路径匹配逻辑需要调整:
- 针对每个游戏服务器的规则,按以下配置修改:
- 规则名称:Proxy_PageOne(自定义命名)
- 匹配URL:
- 选择
正则表达式,模式设为^page_one(.*)(注意不要加开头的/,IIS匹配基于网站根路径) - 勾选
忽略大小写
- 选择
- 条件:添加一条条件,避免内部代理请求重复触发规则:
- 条件输入:
{HTTP_X_FORWARDED_HOST} - 检查输入字符串:
不匹配 - 模式:
.*
- 条件输入:
- 重写URL:设为
http://localhost:11111{R:1}(如果原路径需要保留/,则写为http://localhost:11111/{R:1},根据游戏服务器的Web路径要求调整) - 其他设置:
- 勾选
停止处理后续规则 - 服务器变量:添加
HTTP_X_FORWARDED_PREFIX,值设为/page_one(让游戏服务器识别自身的URL前缀,避免生成错误的跳转链接)
- 勾选
- 对
page_two规则重复上述配置,替换端口为22222,前缀为/page_two
2. 配置ARR代理关键参数
打开IIS管理器→服务器节点→Application Request Routing Cache→Server Proxy Settings,确保勾选以下选项:
Enable proxy(已启用,但需确认)Reverse rewrite host in response headers(关键:自动替换游戏服务器返回的Location头,将localhost:11111替换为website.com/page_one,彻底解决重定向循环)Preserve client IP in X-Forwarded-For header(可选,便于日志排查)Enable SSL offloading(因IIS处理443端口的SSL,代理到本地http端口需开启此项)
3. 修复FRT(Failed Request Tracing)失效问题
- 检查
%SystemDrive%\inetpub\logs\FailedReqLogFiles目录权限,确保网站的应用池身份(默认是IIS AppPool\DefaultAppPool)拥有读写权限 - 重新添加FRT规则:
- 网站节点→
Failed Request Tracing Rules→Add... - 勾选
All content,状态码输入404,500 - 勾选
Request tracing is enabled,完成添加
- 网站节点→
- 触发错误请求后,即可在上述目录下生成追踪日志,查看规则是否被正确匹配
4. 放弃虚拟目录方案
游戏服务器的Web依赖自身进程提供动态内容,IIS直接挂载目录会缺失进程上下文,必然导致500.19(配置文件权限/格式错误)及静态资源404问题,专注反向代理方案即可。
5. 验证与重启
- 执行命令行
iisreset重启IIS服务 - 访问
https://website.com/page_one,检查是否正常转发到对应游戏服务器的Web界面 - 查看
\inetpub\logs\LogFiles\W3SVC1日志,若规则生效,会出现REWRITE_MODULE相关记录,标记请求已被代理
内容的提问来源于stack exchange,提问作者Blue
相关产品推荐
相关产品推荐

