О IP 0.0.0.0 в Джанго - PullRequest
       12

О IP 0.0.0.0 в Джанго

39 голосов
/ 25 октября 2009

У нас есть сервер, на котором мы работаем с сайтом на 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 (Google говорит, что это маршрут по умолчанию)? Почему нельзя получить доступ к 127.0.0.1:80 удаленно?

Ответы [ 3 ]

52 голосов
/ 25 октября 2009

0.0.0.0:80 - это ярлык, означающий «привязать ко всем IP-адресам, которые поддерживает этот компьютер». 127.0.0.1:80 делает его привязанным только к интерфейсу "lo" или "loopback". Если у вас есть только один NIC с одним IP-адресом, вы можете явно привязать его, скажем, 192.168.1.1:80 (если 192.168.1.1 был ваш IP-адрес), или вы могли бы перечислить все IP-адреса, которые ваш компьютер отвечает, но 0.0.0.0:80 - это ярлык для этого.

10 голосов
/ 25 октября 2009

127.0.0.1 - это интерфейс обратной связи , также известный как localhost; это адрес, который доступен только с того же компьютера, так как на самом деле ничего не передается по сети. 0.0.0.0 означает «прослушивать на всех интерфейсах» и, таким образом, будет прослушивать соединения на всех IP-адресах, которые имеет машина (вероятно, только один).

2 голосов
/ 25 октября 2009

127.0.0.1 - это локальный (loopback) ip, а не ip этого компьютера в сети. Чтобы получить доступ к серверу через сеть, вам нужно знать его «сетевой ip

»
...