EC2 Windows实例上Django开发服务器公网访问失败求助
解决EC2 Windows实例上Django开发服务器公网访问问题
排查及修复步骤
绑定全网卡监听地址
Django开发服务器默认仅监听127.0.0.1,仅允许本地访问。启动服务器时必须指定绑定所有网卡地址,执行命令:python manage.py runserver 0.0.0.0:8000此命令会让服务器监听实例所有IP,包括公网IP对应的网卡。
确认安全组规则准确性
检查安全组的自定义TCP 8000端口规则:- 源地址需设为
0.0.0.0/0(允许所有IP)或你需要的特定IP段 - 协议为TCP,端口范围严格为
8000 - 规则状态为已启用
- 源地址需设为
校验Windows防火墙规则细节
核对添加的8000端口入站规则:- 协议类型为TCP,本地端口为
8000 - 远程地址设置为
任何IP地址(或指定范围) - 规则应用于所有网络配置文件(域、专用、公网)
- 规则状态为已启用
- 协议类型为TCP,本地端口为
测试网络连通性
- 在EC2实例本地执行
curl http://localhost:8000,确认服务器正常响应 - 在本地机器用PowerShell执行
Test-NetConnection <实例公网IP> -Port 8000,测试端口是否连通- 若不通,重新排查安全组和防火墙规则;若能通,检查Django的ALLOWED_HOSTS配置
- 在EC2实例本地执行
配置Django的ALLOWED_HOSTS
在项目的settings.py中,将实例公网IP加入ALLOWED_HOSTS列表:ALLOWED_HOSTS = ['<你的EC2公网IPv4地址>', 'localhost', '127.0.0.1']测试阶段可临时设为
ALLOWED_HOSTS = ['*'](生产环境禁止使用),修改后重启Django服务器。
内容的提问来源于stack exchange,提问作者Lawson Mutsa
相关产品推荐
相关产品推荐

