Azure VM部署Django服务无法访问8000端口问题求助
解决Azure VM上Django 8000端口无法外部访问的问题
以下是针对你的问题的排查和解决步骤:
检查Azure网络安全组(NSG)规则
Azure VM的网络访问受NSG管控,这是和本地ufw独立的一层防火墙,你参考的DigitalOcean教程网络规则不适用于Azure,必须单独配置:- 登录Azure门户找到你的VM实例
- 进入「网络」选项卡,点击对应的网络安全组名称
- 在「入站安全规则」中添加一条规则:
- 源:任意(或按需限制IP范围)
- 源端口范围:*
- 目标:任意
- 目标端口范围:8000
- 协议:TCP
- 动作:允许
- 优先级:设置为低于默认拒绝规则的数值(比如100)
验证Django服务的监听地址
确认Django确实在监听所有网卡的8000端口,而非仅本地回环:
在VM终端执行命令:ss -tulpn | grep 8000如果输出显示
127.0.0.1:8000,说明服务只绑定了本地,需重新执行python manage.py runserver 0.0.0.0:8000确保命令无误。测试本地访问排除服务故障
在VM内部执行:curl http://localhost:8000如果能正常返回Django页面内容,说明服务本身无问题,故障出在外部网络链路;若返回错误,检查Django依赖是否安装完整或项目配置是否有误。
检查Django的ALLOWED_HOSTS配置
打开项目的settings.py,确认ALLOWED_HOSTS包含你的VM公网IP或域名,可临时设置为:ALLOWED_HOSTS = ['*']保存后重启Django服务,测试外部访问(后续建议改为具体的IP/域名,降低安全风险)。
临时排除NGINX干扰(可选)
虽然NGINX运行在80端口,理论上不影响8000,但可临时停止服务测试:sudo systemctl stop nginx再尝试访问
http://SERVER_IP_OR_DOMAIN:8000,若能访问则说明存在端口冲突或其他网络配置冲突,需进一步排查NGINX的额外配置。
内容的提问来源于stack exchange,提问作者AlexPy
相关产品推荐
相关产品推荐

