windows server 2019 iis反向代理设置教程:解决重定向循环
在windows server 2019中使用iis配置反向代理时,经常遇到访问子目录(如 /openlist)却陷入无限重定向循环(ERR_TOO_MANY_REDIRECTS)的问题。这种情况通常是因为iis的URL重写规则与后端应用的路径预期不匹配,导致应用不断尝试修正访问地址。通过对 web.config 规则进行精准的路径对齐,可以有效打通代理链路。

一、 修改web.config实现路径对齐
如果你的后端服务(如openlist)运行在本地5244端口,且你希望通过 https://ip/openlist 访问,重写后的目标地址包含完整的子路径。
1、错误配置:仅转发根目录,导致后端程序找不到对应的路由。
<action type="Rewrite" url="http://127.0.0.1:5244{R:1}" appendQueryString="true" />
2、正确配置:将转发目标显式指定到子路径下,前后端路径保持一致。
<action type="Rewrite" url="http://127.0.0.1:5244/openlist{R:1}" appendQueryString="true" />
二、 优化URL重写规则逻辑
为了让代理更加稳定,建议将完整的重写逻辑更新至此配置。如果后文包含多个规则,请务必开启 stopProcessing="true" 以防止规则冲突。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="OpenlistProxy" stopProcessing="true">
<match url="^openlist(/.*)?" ignoreCase="true" />
<action type="Rewrite" url="http://127.0.0.1:5244/openlist{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
执行此修改后,iis会使用与外部访问一致的基路径将请求转发到后端。由于后端程序现在始终在其预期的 /openlist 路径下接收数据,不再尝试通过重定向来修正URL,重定向循环也随之消失。
三、 配置后端应用环境
除了iis端的调整,后端程序(如openlist)的配置文件也需要进行对应的“降维”适配,防止其强制跳转https或根目录。
1、修改config.json:包含 site_url 子路径。
"site_url": "https://你的ip地址/openlist",
"sub_path": "/openlist"
2、关闭强制跳转:如果iis已经配置了SSL证书,建议在后端程序中设置 "disable_force_https": true,将加密工作完全交给iis处理。
四、 检查ARR模块设置
反向代理的成功离不开Application Request Routing (ARR) 模块的全局授权。
1、进入iis管理器,点击服务器根节点。
2、找到Application Request Routing Cache。
3、在右侧点击Server Proxy Settings。
4、勾选了Enable proxy,否则所有的重写规则都会被拦截并返回404错误。
这种情况多见于前后端路径配置不对等。如果以后在访问时出现静态资源(图片、CSS)加载失败,通常是由于web.config中的 match url 正则表达式未包含对斜杠的处理,建议按照上述规则重新校对。






