DESIGN / CODE / INFRA / AI

解説

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は何が違う?接続先と待ち受けを分けよう
保存リストを見る →
この記事の道しるべ 3項目

開発サーバーの案内に、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

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。