【问题标题】:Django development server inaccessible from the internet无法从 Internet 访问 Django 开发服务器
【发布时间】:2015-09-15 15:38:04
【问题描述】:

我正在运行一个 Django 开发服务器

python manage.py runserver 0.0.0.0:8000

它可以从本地机器完全访问,但不能从外部世界访问。 Windows 8.1、Python 3.4.3、Django 1.8.4。

我尝试了不同的端口(7500、50001)并在 Windows 防火墙中明确允许该端口(通过入站规则)。 我还在另一台机器(AWS EC2)上运行服务器,并允许那里的端口,结果相同。

Netstat 说程序正在监听指定的端口,所以理论上它应该可以工作。 我的机器也在 settings.py 的 ALLOWED HOSTS 列表中。

我知道开发服务器不够安全,无法用于生产,但我正在做一件短期的小事,不值得为正确部署而烦恼。那么,任何想法可能是什么问题?

【问题讨论】:

  • 这与 Python 和 Django 无关。而不是您尝试通过网络访问您的机器的方式。
  • @MathiasEttinger,在浏览器中输入 IP:port。有没有更好的办法?
  • 我更多的是考虑路由器参数。它是否会将对 your_ip:8000 的请求转发到运行服务器的计算机?自从it should work there 之后,我有点担心 EC2
  • 是的,我也是这么想的,这就是我尝试 EC2 的原因。从您提到的答案中,我尝试了 telnet 并且它有效,因此很可能是连接问题。但是由于防火墙保持端口开放,安全组也保持开放,所以问题仍然存在。

标签: python django remote-access


【解决方案1】:

在我不是 windows 的盒子里,但在这种情况下,我认为我用命令 ifconfig 搜索我的 ip 并没有什么区别:

# ifconfig
eth0      Link encap:Ethernet     
          inet addr:172.16.0.2  Bcast:172.16.0.255  Mask:255.255.255.0
          inet6 addr: fe80::215:f2ff:fef4:678c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:73452 errors:0 dropped:0 overruns:0 frame:0
          TX packets:52360 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:80778194 (77.0 MiB)  TX bytes:5084041 (4.8 MiB)

然后,尝试启动服务器以监听该 ip:

./manage.py runserver 172.16.0.2:8000

端口 :8000 在我的防火墙上是打开的,而且它工作正常。

最有可能的是windows中对应的命令叫做ipconfig

为了从外部世界 (not recommended for any reason) 访问服务器,请检查术语“port forwarding”以在防火墙中对内部 IP 执行。

【讨论】:

  • 我相信 ipconfig 会为您提供私有 IP,因此它也只能在本地工作。
  • 如果你想从核心外网访问它,你必须打开调制解调器的相关端口,并执行一个端口转发到私有IP。我会not do that, for any reason。你最好在端口转发部分之前设置 nginx - supervisor - gunicorn 并设置DEBUG = False
猜你喜欢
  • 2016-07-15
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 2019-06-22
  • 2013-12-19
  • 1970-01-01
  • 2011-08-27
相关资源
最近更新 更多