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

Ubuntu服务器上Django开发服务器无法浏览器访问,仅curl可用

解决Django开发服务器本地无法访问但服务器curl可访问的问题

嘿,我之前在DigitalOcean上搭Django时也遇到过一模一样的问题,咱们一步步来排查解决:

1. 确认Django开发服务器的启动命令

首先得确保你启动服务器时用的是正确的命令——默认的python manage.py runserver只会绑定127.0.0.1,只能在服务器本地访问。你必须显式指定监听所有网卡:

python manage.py runserver 0.0.0.0:8000

启动后应该能看到类似这样的输出:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
July 20, 2024 - 12:34:56
Django version 4.2.3, using settings 'myproject.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

2. 检查Ubuntu服务器的UFW防火墙

Ubuntu默认启用了UFW防火墙,很可能是它拦截了外部对8000端口的请求:

  • 先查看当前防火墙规则:
    sudo ufw status
    
  • 如果看不到8000/tcp在允许列表里,执行命令开放端口:
    sudo ufw allow 8000/tcp
    
  • 再次运行sudo ufw status确认规则已添加。

3. 检查DigitalOcean的云防火墙

除了服务器本地的UFW,DigitalOcean还有一层云级防火墙,这也是容易忽略的点:

  • 登录你的DigitalOcean控制面板,找到目标服务器
  • 切换到「Firewalls」标签页
  • 确保已经创建了入站规则:允许TCP协议的8000端口,来源可以设置为0.0.0.0/0(允许所有IP访问,测试用)或者你的本地公网IP(更安全)

4. 本地访问时用服务器公网IP

最后要注意:本地浏览器不能直接访问0.0.0.0:8000,你得用服务器的公网IP地址加上端口,比如:

http://你的服务器公网IP:8000

你可以在DigitalOcean服务器详情页找到公网IP,或者在服务器终端运行curl ifconfig.me获取。

按照这几步排查下来,基本就能解决本地无法访问的问题啦!

内容的提问来源于stack exchange,提问作者Romain Sacchi

火山引擎 最新活动