You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

VPS上启动Django网站后无法访问,求问题排查思路

排查Django服务器启动正常但无法访问的问题

嘿,我来帮你梳理下可能导致这个问题的几个常见原因,咱们一个个排查:

  • 防火墙/安全组拦截端口
    这是最常见的问题!你指定的8000端口可能被服务器本地防火墙或者云服务商的安全组挡住了:

    • 如果是Linux服务器,用ufw status查看防火墙规则,确认8000端口的入站请求被允许;如果用iptables,需要添加允许8000端口的规则。
    • 如果是云服务器(比如AWS、阿里云),一定要去控制台的安全组配置里,添加入站规则,允许TCP协议的8000端口访问。
  • Django的ALLOWED_HOSTS配置错误
    Django有严格的主机验证机制,你必须把访问用的域名或服务器IP加入到项目settings.pyALLOWED_HOSTS列表中:

    # settings.py 示例配置
    ALLOWED_HOSTS = ['my_domain.com', '你的服务器公网IP']
    

    测试阶段可以临时设为ALLOWED_HOSTS = ['*'](但生产环境绝对不能这么做,会有安全风险),修改配置后记得重启Django服务器。

  • 域名解析未生效
    当你用my_domain.com:8000访问时,要确保域名已经正确解析到服务器的公网IP:

    • 在本地终端执行ping my_domain.com,查看返回的IP是否和服务器公网IP一致。如果不一致,需要去域名服务商的DNS管理后台,修改A记录指向正确的服务器IP,解析生效可能需要几分钟到几小时。
  • 服务器网络绑定异常
    虽然你用了0.0.0.0:8000启动(理论上绑定所有网卡),但还是可以检查下实际监听情况:

    • 在服务器上执行netstat -tuln | grep 8000,确认输出里的监听地址是0.0.0.0:8000,而不是127.0.0.1:8000(后者只能本地访问)。
  • 客户端网络限制
    有时候问题出在你本地的网络环境:

    • 先尝试直接用服务器公网IP+8000端口访问,如果能打开,说明是域名相关的问题;如果也不行,再回到服务器端排查防火墙和配置。
    • 部分公司内网或公共网络会屏蔽非标准端口(8000不属于常用的80/443端口),可以试试换个端口启动(比如python3.4 manage.py runserver 0.0.0.0:8001),或者配置Nginx反向代理将80端口转发到8000。

内容的提问来源于stack exchange,提问作者Sergei Petrov

火山引擎 最新活动