Django应用向localhost传JSON:本地正常生产环境连接失败
问题分析与解决办法
核心问题
本地测试正常但生产环境连接被拒绝,本质是生产环境中目标服务的可达性和监听配置与本地不一致:
- 本地测试时,Django和目标服务器在同一台机器,访问
127.0.0.1可直接命中服务 - 生产环境中,要么目标服务器不在Django所在的生产机器上,要么目标服务器仅监听本地回环地址,未对外暴露
具体排查与修复步骤
1. 确认目标服务器部署位置
- 若目标服务器与Django应用不在同一台生产机器:将请求地址中的
127.0.0.1替换为目标服务器的实际内网IP/公网IP/域名,例如修改为http://192.168.1.100:16732/api/v2/requests - 若目标服务器与Django在同一台生产机器:继续排查监听配置
2. 检查目标服务器的监听地址
登录生产服务器,执行命令查看端口监听情况:
netstat -tulpn | grep 16732
- 若输出显示监听地址为
127.0.0.1:16732:说明服务仅允许本地回环访问,需修改目标服务配置,使其监听0.0.0.0:16732(允许所有网卡访问),随后重启服务 - 若无任何输出:说明目标服务未在生产服务器上启动,先启动服务再测试
3. 验证生产环境网络连通性
在Django所在的生产服务器上,用curl命令测试连接:
curl -X POST http://127.0.0.1:16732/api/v2/requests -H "Content-Type: application/json" -d '{}'
- 若同样报错连接拒绝:问题出在服务本身(未启动/监听地址错误)
- 若能正常响应:检查Django代码中的
auth参数、task数据格式是否异常,或生产环境的requests库版本与本地是否不一致
4. 排查防火墙/安全组规则
若目标服务器与Django不在同一机器,需检查:
- 目标服务器的防火墙是否开放16732端口
- 云服务安全组是否允许Django服务器的IP访问目标服务器的16732端口
内容的提问来源于stack exchange,提问作者Sergei
相关产品推荐
相关产品推荐

