web-dev-qa-db-ja.com

DjangoのIP 0.0.0.0について

Django powered siteを実行しているサーバーがあります。サイトをテストしたいので、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

別のPCからサーバーのIPを使用してサイトにアクセスすることはできません。

なぜ? 0.0.0.0の正確な意味は何ですか(Googleはこれがデフォルトのルートだと言っています)?リモートで127.0.0.1:80にアクセスできないのはなぜですか?

42
Zhu Tao

0.0.0.0:80は、「このコンピューターがサポートするすべてのIPアドレスにバインドする」ことを意味するショートカットです。 127.0.0.1:80は、「lo」または「loopback」インターフェースのみにバインドします。 IPアドレスが1つしかない [〜#〜] nic [〜#〜] が1つしかない場合は、192.168.1.1:80192.168.1.1がIPアドレスの場合)などで明示的にバインドできます。コンピュータが応答するすべてのIPをリストすることもできますが、0.0.0.0:80はそのショートカットです。

54
Paul Tomblin

127.0.0.1は ループバックインターフェイス であり、localhostとも呼ばれます。実際には何もネットワークを経由しないため、これは同じコンピューターからのみアクセス可能なアドレスです。 0.0.0.0は「すべてのインターフェースをリッスンする」ことを意味します。したがって、マシンが持っているすべてのIPアドレス(おそらく1つだけ)で接続をリッスンします。

10
Brian Campbell

127.0.0.1はローカル(ループバック)IPであり、ネットワーク上のそのコンピューターのIPではありません。ネットワークを介してサーバーにアクセスするには、そのネットワークIPを知っている必要があります。

2
Adam Hopkinson