Railsを触り始めてなんとなく使っている呪文「localhost:3000」
rails sとセットで使用している例のアレである。
初学者に分かりやすくさらっと解説!
「localhost」とは何を指すか
「localhost」はホスト名
ネットワークに接続された機器(PC、プリンタ、ルーター等)を「ホスト」と呼ぶ。
ホストに名付けられた名前を「ホスト名」と呼ぶ。
「localhost」は現在使用しているシステム自身(=自分のPC)の名前である。
Macで自分のホスト名を確認する方法
アップルメニュー(左上のリンゴマーク) >「システム環境設定」>「共有」を選択。
画面上部、「ローカルネットワーク上のコンピューターから...」と書かれている部分の「xxx.local」がホスト名である。
自分自身を示すIPアドレス
自分自身を指すIPアドレスを「ループバックアドレス」と呼ぶ。
#IPv4の場合
127.0.0.0/8
#IPv6の場合
::1/128
つまり、「localhost」という文字列は「http://127.0.0.1」というアドレスなのである。
「localhost:3000」は、「http://127.0.0.1:3000」というわけだ。
図解
PCにはいくつかのIPアドレスが存在する。
ここでは、「ネットワーク内でのPCの住所」を「独自のIPアドレス」としている。
インターネットと言う町の中で、相対的に自分の住所を表すIPアドレスである。
(東京都文京区,...のような住所。)
それでは、「自分を示すIPアドレス」とはなんぞや?
それぞれのPCにおいて、「127.0.0.1」は「そのPC自身」を表すIPアドレスとなっている。
絶対的に自分の住所を表す、いわば「自宅」という単語と同義である。
AさんのPCで「127.0.0.1」は「AさんのPC」を表し、
BさんのPCで「127.0.0.1」は「BさんのPC」を表す。
「3000」とは何か
ポート番号である
上図のビルをPCとすると、どのポート(入口)でリクエストを受け取るかを指定している。
Railsのポート番号のデフォルトは3000に指定されている。
補足① 外部から「localhost:3000」に接続できないの?
結論:できる
Railsではサーバーを起動したとき、デフォルトで"IPアドレス「127.0.0.1」で通信を待ち受ける設定"になっている。
上記の通り自身のPCを参照してしまい外部のPCへアクセスできないのである。
よって、このデフォルトのIPアドレスを変えてやれば外部からもアクセスできるようになる。
bindingのオプションをつければ外部から接続可能
例えば、ネットワーク上でのIPアドレスが「192.168.111.1」である場合、
rails server -b 192.168.111.1
とオプションをつけることで、外部からも「http://192.168.111.1:3000」とすれば接続できる。
ちなみに、
rails server -b 0.0.0.0
とすれば、「その機器に付いている全部のIPアドレスで待ち受ける」状態になる。
補足② ポート番号は変えられないの?
例によって、オプションで変更できる。
rails s -b 192.168.111.1 -p 3100
上記の場合、IPアドレスをデフォルトのlocalhostから「192.168.111.1」に、
ポート番号をデフォルトの「3000」から「3100」に変更している