React调用FastAPI后端报ERR_CONNECTION_REFUSED问题求助(o2switch部署后)
问题解决:部署后React调用FastAPI出现net::ERR_CONNECTION_REFUSED
核心原因
React代码中请求地址写死为http://localhost:8001/calcul,部署后前端在用户浏览器中运行,这里的localhost指向用户本地机器,而非部署后端的o2switch服务器,导致无法建立连接。
解决方案
1. 修改React请求地址
将Axios的请求地址替换为服务器的公网IP或绑定的域名,加上端口8001:
Axios.post("http://你的服务器公网IP:8001/calcul", { localisation: "MA", critere_priviligier: "12", largeur_lame: "12", espace_lame: "12" }) // 后续代码不变
如果有绑定域名,也可以用域名代替IP:http://你的域名:8001/calcul
2. 开放服务器8001端口
o2switch服务器默认可能未开放8001端口的入站访问,需要:
- 登录服务器控制面板,找到防火墙/安全组设置
- 添加入站规则,允许TCP协议的8001端口访问
- 若自行配置防火墙(如ufw),执行命令开放端口:
sudo ufw allow 8001/tcp
3. 验证FastAPI服务状态
在服务器本地测试接口是否正常运行:
- 执行命令检查进程:
ps aux | grep uvicorn,确认FastAPI进程存在 - 用curl测试接口:
curl http://localhost:8001/calcul -X POST -H "Content-Type: application/json" -d '{"localisation":"MA","critere_priviligier":"12","largeur_lame":"12","espace_lame":"12"}',查看是否返回正常响应
4. 生产环境优化
- 启动FastAPI时移除
--reload参数(该参数仅用于开发热重载),生产启动命令:uvicorn main:app --host 0.0.0.0 --port 8001 - 使用进程管理工具(如systemd、pm2)托管FastAPI服务,避免服务器重启后服务停止
内容的提问来源于stack exchange,提问作者Shrmn
相关产品推荐
相关产品推荐

