解説
localhost・127.0.0.1・0.0.0.0は何が違う?接続先と待ち受けを分けよう
開発サーバーの案内に、localhost、127.0.0.1、0.0.0.0と出てくる。似ているけれど、接続先として読むときと、待ち受け設定として読むときで意味が違うよ。

開発サーバーの案内に、localhost、127.0.0.1、0.0.0.0と出てくる。似ているけれど、接続先として読むときと、待ち受け設定として読むときで意味が違うよ。
このページでは、自分の端末へ接続する入口と、どのネットワークで待つかを分けて理解する。設定変更をしなくても読める基礎編だよ。
自分自身を指す入口
localhostは、通常その端末自身への接続に使う名前。127.0.0.1はIPv4のループバックアドレスで、自分自身へ戻る通信に使われる。IPv6では::1もあるよ。
「自分自身」は、いまその名前を解釈して接続する環境のこと。コンテナーの中からのlocalhostが、いつもホストPCを指すとは限らない点が大切なんだ。
0.0.0.0は、待ち受け側で見る
サーバーの設定で0.0.0.0を指定すると、通常はすべてのIPv4インターフェースで待ち受ける指定になる。Node.jsの待ち受け説明でも、ホストを省いた場合などの扱いが説明されている。
これは「ブラウザに入力すべき、世界共通の自分のサイトの住所」という意味ではない。利用者が接続するときは、実際に到達できるホスト名やIPアドレスを使うよ。
| 表示を見た場所 | まず考えること |
|---|---|
| ブラウザのURL | どの環境から、どこへ接続するか |
| サーバーの起動設定 | どのアドレスで待ち受けるか |
| Dockerのports | ホストのどこへ公開するか |
公開範囲は一つの値だけで決まらない
0.0.0.0で待てば必ずインターネットへ公開される、とも限らない。ファイアウォール、ポート公開、ルーター、クラウドの設定も関係する。一方、自分の端末だけで使いたいなら、広い待ち受けへ変える前に必要性を確認しよう。
Dockerのlocalhost限定公開は、実際のホストへの公開を扱う詳しい記事。接続する側・待つ側・コンテナーの境界を紙へ一つずつ書いてみると、設定をむやみに広げずに切り分けやすいよ。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。