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
にアクセスできないのはなぜですか?
0.0.0.0:80
は、「このコンピューターがサポートするすべてのIPアドレスにバインドする」ことを意味するショートカットです。 127.0.0.1:80
は、「lo」または「loopback」インターフェースのみにバインドします。 IPアドレスが1つしかない [〜#〜] nic [〜#〜] が1つしかない場合は、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アドレス(おそらく1つだけ)で接続をリッスンします。
127.0.0.1はローカル(ループバック)IPであり、ネットワーク上のそのコンピューターのIPではありません。ネットワークを介してサーバーにアクセスするには、そのネットワークIPを知っている必要があります。