Windows 10下IIS反向代理至Node.js服务出现404.4错误求助
解决Windows 10上IIS反向代理404.4错误的办法
先给你梳理下几个关键排查点,毕竟Windows 10的IIS默认配置和Server 2016确实存在不少差异:
1. 先修正web.config的语法错误
你贴出的web.config里多了一个</location>闭合标签,但开头并没有对应的<location>节点,这会导致IIS解析配置出错,直接修正为以下内容:
<configuration> <system.webServer> <rewrite> <rules> <clear /> <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://localhost:3000/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
2. 确认ARR代理功能已启用
Windows 10上安装ARR后,默认可能没开启代理功能,这是最常见的触发404.4的原因:
- 打开IIS管理器,选中左侧的服务器节点(不是你的站点)
- 双击中间面板的Application Request Routing Cache
- 在右侧“操作”栏里点击服务器代理设置
- 勾选“启用代理”,然后点击“应用”
- 最后重启IIS(可以在命令行里运行
iisreset)
3. 检查IIS必需组件是否安装完整
Windows 10的IIS默认组件比Server 2016少,确保你安装了这些关键组件:
- 打开“控制面板”→“程序”→“启用或关闭Windows功能”
- 展开“Internet Information Services”→“万维网服务”→“应用程序开发功能”,勾选ISAPI扩展和ISAPI筛选器
- 展开“常见HTTP功能”,确保静态内容已勾选
- 点击确定,等待组件安装完成后重启IIS
4. 验证站点应用程序池配置
确保你的mywebsite.com站点使用的应用程序池设置适配Node.js站点:
- 在IIS管理器里右键你的站点→“基本设置”
- 确认应用程序池的“.NET CLR版本”设置为无托管代码(因为Node.js是无托管应用)
- 托管管道模式保持“集成”即可,点击确定后重启应用程序池
5. 排查防火墙和本地访问权限
- 先在Win10机器上用浏览器直接访问
http://localhost:3000,确认Node.js站点本身能正常运行 - 检查Windows Defender防火墙是否阻止了IIS的出站请求:可以暂时关闭防火墙测试,如果能正常访问,就添加一条允许IIS向localhost:3000发送请求的规则
- 确认站点文件夹的权限:除了IUSR,还要确保IIS_IUSRS组有读取权限
按照上面的步骤一步步排查,应该能解决这个404.4错误。我之前在Win10上配置反向代理时也遇到过类似问题,大多是ARR代理没开或者组件没装全导致的。
内容的提问来源于stack exchange,提问作者manwithplanet
相关产品推荐
相关产品推荐

