2009-10-25 15 views
31

Tenemos un servidor sobre el cual estamos ejecutando un sitio con Django. Como queremos probar el sitio, estamos utilizando el servidor de desarrollo integrado de Django (es decir, runserver). Pero tengo curiosidad acerca de la IP del siguiente comando:Acerca de IP 0.0.0.0 en Django

python manage.py runserver 0.0.0.0:80 

El resultado es un sitio en funcionamiento podemos visitar la utilización de IP del servidor de forma remota.
Pero cuando se utiliza en lugar 127.0.0.1:

python manage.py runserver 127.0.0.1:80 

Nadie puede visitar el sitio con IP del Sever desde otro PC.

¿Por qué? ¿Qué significa exactamente 0.0.0.0 (Google dice que es la ruta predeterminada)? ¿Por qué no se puede acceder a 127.0.0.1:80 de forma remota?

Respuesta

40

0.0.0.0:80 es un atajo que significa "enlazar a todas las direcciones IP compatibles con esta computadora". 127.0.0.1:80 lo hace enlazar solo a la interfaz "lo" o "loopback". Si tiene solo un NIC con solo una dirección IP, puede vincularlo explícitamente con, por ejemplo, 192.168.1.1:80 (si 192.168.1.1 fue su dirección IP), o puede enumerar todas las direcciones IP a las que responde su computadora, pero 0.0.0.0:80 es un atajo para ese.

2

127.0.0.1 es la ip local (loopback), no la ip de esa computadora en la red. Para acceder a un servidor en la red, necesitará saber su 'red ip

+1

gracias adam. pero es 0.0.0.0:80 una necesidad para proporcionar el acceso para otros clientes? –

7

127.0.0.1 es la loopback interface, también conocida como localhost; esta es una dirección a la que solo se puede acceder desde la misma computadora, ya que en realidad nada pasa por la red. 0.0.0.0 significa "escuchar en todas las interfaces" y, por lo tanto, escuchará las conexiones en todas las direcciones IP que tenga la máquina (probablemente solo una).