54

Django を利用したサイトを実行しているサーバーがあります。サイトをテストしたいので、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リモートでアクセスできないのはなぜですか?

4

3 に答える 3

65

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はそのショートカットです。

于 2009-10-25T17:31:13.490 に答える
12

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

于 2009-10-25T17:24:47.200 に答える
2

127.0.0.1 は、ネットワーク上のそのコンピューターの IP ではなく、ローカル (ループバック) IP です。ネットワーク経由でサーバーにアクセスするには、そのネットワーク IP を知る必要があります

于 2009-10-25T17:23:47.607 に答える