Вопрос
У нас есть сервер, на котором у нас работает сайт с поддержкой 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
получить удаленный доступ?
Решение
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
это ярлык для этого.
Другие советы
127.0.0.1 - это интерфейс обратной связи , также известный как localhost
; это адрес, который доступен только с того же компьютера, так как на самом деле ничего не передается по сети. 0.0.0.0 означает «прослушивать на всех интерфейсах» и, таким образом, будет прослушивать соединения на всех IP-адресах, которые имеет машина (вероятно, только один).
127.0.0.1 - это локальный (loopback) ip, а не ip этого компьютера в сети. Чтобы получить доступ к серверу через сеть, вам необходимо знать его «сетевой IP-адрес