2009-10-25 13 views
31

Djangoで動くサイトを運営しているサーバーがあります。サイトをテストしたいので、Djangoのビルドイン開発サーバー(例:runserver)を使用しています。しかし、私は、次のコマンドのIPについての興味:DjangoのIP 0.0.0.0について

python manage.py runserver 0.0.0.0:80 

それは我々がリモートサーバーのIPアドレスを使用して訪問することができ、実行中のサイトになります。
しかし、その代わりに127.0.0.1を使用している場合:

python manage.py runserver 127.0.0.1:80 

誰を別のPCからサーバのIPを持つサイトを訪問することができます。

なぜですか? 0.0.0.0とはどういう意味ですか(Googleはデフォルト経路だと言っています)? 127.0.0.1:80にリモートからアクセスできないのはなぜですか?

答えて

40

0.0.0.0:80は「このコンピュータがサポートするすべてのIPアドレスにバインドする」という意味のショートカットです。 127.0.0.1:80は、 "lo"または "loopback"インタフェースにのみバインドされます。 1つのIPアドレスを持つNICが1つしかない場合は、192.168.1.1:80(IPアドレスが192.168.1.1の場合)を明示的にバインドするか、コンピュータが応答するすべてのIPを一覧表示できますが、0.0.0.0:80のショートカットはそれ。

2

127.0.0.1はローカル(ループバック)IPであり、ネットワーク上のそのコンピュータのIPではありません。ネットワークを介してサーバーにアクセスするには、そのネットワークのIPアドレスを知る必要があります。localhostとも呼ばれるloopback interfaceは、ネットワークのIPアドレス

+1

ありがとうございました。 0.0.0.0:80で他のクライアントへのアクセスを提供する必要がありますか? –

7

127.0.0.1です。これは同じコンピュータからしかアクセスできないアドレスです。実際には何もネットワークを経由しません。 0.0.0.0は "すべてのインタフェースでリッスン"を意味し、マシンが持つすべてのIPアドレス(おそらく1つ)の接続をリッスンします。

関連する問題