树莓派上ASP.NET Core+React+Node.js请求代理失败问题
解决树莓派上React代理ASP.NET Core失败(ECONNRESET)的问题
本地用Visual Studio集成React基础模板搭建的带Node.js的简易网站运行正常,但部署到树莓派后,出现Node.js请求代理到ASP.NET Core失败的问题,错误信息:
[HPM] Error occurred while proxying request 192.168.0.101:44463/login to http://192.168.0.101:5124/ [ECONNRESET]
网络配置:
- 客户端IP:192.168.0.100
- 树莓派IP:192.168.0.101
- ASP.NET Core端口:5124,React端口:44463
以下是排查和解决步骤:
1. 确认ASP.NET Core服务监听地址
登录树莓派执行命令:
netstat -tulpn | grep 5124
检查ASP.NET Core进程是否监听0.0.0.0:5124(允许所有IP访问),如果仅监听127.0.0.1,需修改Program.cs添加:
builder.WebHost.UseUrls("http://0.0.0.0:5124");
确保服务能被树莓派本地及外部客户端访问。
2. 验证端口连通性
- 树莓派本地测试:执行
curl http://192.168.0.101:5124/login,如果无响应,说明ASP.NET Core服务未正常启动或配置错误。 - 客户端远程测试:从192.168.0.100执行
curl http://192.168.0.101:5124/login,如果失败,排查树莓派防火墙或路由器端口拦截问题。
3. 修正setupProxy.js代理配置
确保代理配置中changeOrigin设为true,目标地址正确,示例配置:
const { createProxyMiddleware } = require('http-proxy-middleware'); module.exports = function(app) { app.use( '/login', createProxyMiddleware({ target: 'http://192.168.0.101:5124', changeOrigin: true, secure: false, }) ); };
changeOrigin可避免ASP.NET Core因跨域规则拒绝请求,HTTP服务需将secure设为false。
4. 开放树莓派端口
执行命令开放所需端口:
sudo ufw allow 5124/tcp sudo ufw allow 44463/tcp sudo ufw reload
可临时关闭防火墙sudo ufw disable测试是否为防火墙导致问题。
5. 确保React服务监听外部IP
启动React服务时,设置监听0.0.0.0,让客户端能正常访问并触发代理:
HOST=0.0.0.0 PORT=44463 npm start
生产部署时,使用serve等工具也需配置监听0.0.0.0。
6. 查看详细日志定位
- ASP.NET Core端设置日志级别为Debug,查看请求接收日志;
- React端启动时开启代理调试日志:
DEBUG=http-proxy-middleware:* npm start
通过日志确认请求转发的具体异常点。
内容的提问来源于stack exchange,提问作者ASMcoder
相关产品推荐
相关产品推荐

