You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure VM部署Django服务无法访问8000端口问题求助

解决Azure VM上Django 8000端口无法外部访问的问题

以下是针对你的问题的排查和解决步骤:

  • 检查Azure网络安全组(NSG)规则
    Azure VM的网络访问受NSG管控,这是和本地ufw独立的一层防火墙,你参考的DigitalOcean教程网络规则不适用于Azure,必须单独配置:

    1. 登录Azure门户找到你的VM实例
    2. 进入「网络」选项卡,点击对应的网络安全组名称
    3. 在「入站安全规则」中添加一条规则:
      • 源:任意(或按需限制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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:55:51