2009-10-25 11 views
31

Abbiamo un server su cui stiamo eseguendo un sito di Django. Poiché vogliamo testare il sito, utilizziamo il server di sviluppo incorporato di Django (cioè runserver). Ma io sono curioso di sapere l'ip del seguente comando:Informazioni su IP 0.0.0.0 in Django

python manage.py runserver 0.0.0.0:80 

Essa si traduce in un sito in esecuzione possiamo visitare utilizzando IP del server in remoto.
Ma quando si utilizza 127.0.0.1 invece:

python manage.py runserver 127.0.0.1:80 

Nessuno può visitare il sito con IP del sever da un altro PC.

Allora perché? Che cosa significa esattamente 0.0.0.0 (Google dice che è la route predefinita)? Perché non è possibile accedere a 127.0.0.1:80 in remoto?

risposta

40

0.0.0.0:80 è una scorciatoia che significa "associa a tutti gli indirizzi IP supportati da questo computer". 127.0.0.1:80 si collega solo all'interfaccia "lo" o "loopback". Se hai un solo NIC con un solo indirizzo IP, puoi legarlo esplicitamente con, per esempio, 192.168.1.1:80 (se 192.168.1.1 era il tuo indirizzo IP), oppure puoi elencare tutti gli IP a cui risponde il tuo computer, ma 0.0.0.0:80 è una scorciatoia per quella.

2

127.0.0.1 è l'ip locale (loopback), non l'IP di quel computer sulla rete. Per accedere a un server attraverso la rete, è necessario conoscere la sua rete IP

+1

grazie adam. ma 0.0.0.0:80 è un must per fornire l'accesso ad altri client? –

7

127.0.0.1 è loopback interface, noto anche come localhost; questo è un indirizzo accessibile solo dallo stesso computer, poiché in realtà non passa nulla sulla rete. 0.0.0.0 significa "ascolta su tutte le interfacce", e quindi ascolterà le connessioni su tutti gli indirizzi IP della macchina (probabilmente solo uno).

Problemi correlati