关于Django中的IP 0.0.0.0

61

我们有一个服务器,上面运行着一个基于Django的网站。由于我们想测试网站,所以我们正在使用Django内置的开发服务器(即runserver)。但是我对以下命令的IP很好奇:

python manage.py runserver 0.0.0.0:80

使用服务器的IP地址,可以远程访问正在运行的网站。
但是当使用 127.0.0.1 时:

python manage.py runserver 127.0.0.1:80

其他电脑无法通过服务器IP访问该网站。

为什么呢?0.0.0.0的确切含义是什么(谷歌表示它是默认路由)?为什么远程无法访问127.0.0.1:80呢?

3个回答

71

0.0.0.0:80是一个快捷方式,意思是“绑定到本计算机支持的所有IP地址”。127.0.0.1:80则只会绑定到“lo”或“回环”接口。如果您只有一个NIC和一个IP地址,则可以使用显式地绑定它,例如,192.168.1.1:80(如果 192.168.1.1 是您的IP地址),或者您可以列出计算机响应的所有IP地址,但是0.0.0.0:80 是一个快捷方式。


为了补充答案,这个方法在 Windows 上不起作用。请参考这里 - Kishore Sampath

12

127.0.0.1是回环接口,也被称为localhost;这是一个仅能从同一台计算机访问的地址,因为实际上没有任何内容通过网络传输。0.0.0.0表示"监听所有接口",因此将侦听该计算机拥有的所有IP地址上的连接(可能只有一个)。


2

127.0.0.1是本地(环回)IP地址,而不是网络上那台计算机的IP地址。要访问网络上的服务器,您需要知道它的网络IP地址。


1
谢谢Adam。但是0.0.0.0:80是否必须提供其他客户端的访问权限? - Zhu Tao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接