LinuxでWebサーバーを構築した場合、ローカルホストのURLを指定すると自分のWebサーバーにアクセスできるのをご存じでしょうか。この機能をうまく活用すればネットワークに接続しなくてもWebサーバーの動作チェックが可能です。
今回は、Linuxにおけるローカルホストを仕組みについて解説します。
目次
URLの基本
WebブラウザでURLのリンクをクリックすると、リンク先のサイトが開きます。URLとは何かを知らずに使っている方がいるかもしれません。
URLとはUniform Resource Locatorの略で、インターネット上のリソースの場所を特定するための記号です。リソースの場所を指すことから、アドレスと呼ばれることもあります。
なおローカルホストもリソースの1つなので、ローカルホストのURLという言い方も可能です。まずはURLの基本について解説します。
URLはユニークでなければならない
基本的に1つのURLに対して1台のサーバーが対応しており、世界中のどこからインターネットに接続しても、URLを使うことで1台サーバーにアクセスできます。
これはURLを運用する仕組みが国際標準で決められており、インターネットに接続した機器がそれに従って通信しているからです。もしWebサーバーをインターネットに公開するなら、ユニークなURLを設定しなければなりません。
URLはドメインで記述する
URLは、「https://」などのプロトコルと、それに続くドメインやディクトリから構成されてますが、インターネット上のリソースの場所を特定するための記号がドメインです。
ドメインの元は英語の「domain」で領地、領域、分野といった意味の単語です。住所を書く際に県名、市町村名、番地の順で書くように、URLのドメインも国を表す記号から特定の企業名などをドットで区切ったアルファベットで表現します。
URLの具体例
1 |
https://webukatu.com/wordpress/blog/1214/ |
この場合、「https://」がプロトコル、「webukatu.com」がドメインで「/wordpress/blog/1214/」がデフィクトリです。さらに「webukatu.com」は、大きな「com」ドメインに含まれる「webukatu」というホストで、インターネット上のリソースの場所が特定されます。
URLについては下記の記事も参照してください。
【入門】【初心者】URLやポート番号ってなに?
IPアドレスでもアクセスできる
Webサーバーにアクセスする際にURLを指定するのが一般的ですが、URLのドメインの代わりにIPアドレスを指定できます。
なおIPアドレスとは、インターネット上に接続されたサーバーなどの機器に割り振られたユニークな数字の組み合わせのことです。
ただし先ほどのドメインと違い、IPアドレスで使われる数字に意味はありません。また、クラウドに設置されたサーバーはURLとIPアドレスが1対1に対応していないケースがほとんどのた一般的には使われません。
ローカルホストを使う
LinuxでWebサーバーを設定した場合、まだ公開に必要なドメインを取得していなくいても、同じホスト内であればアクセスしてチェックが可能です。
ただしまだドメインが無いのでURLを指定できません。もし同じホストでアクセスしているのなら、ドメインの代わりにローカルホストを指定できます。では、ローカルホストでアクセスできるとは、どのような仕組みなのでしょうか。
次からローカルホストについて解説します。
ループバックの仕組み
LinuxにはWi-FiやLANケーブルに接続していなくても、httpサーバーのようなTCP/IPを使った機能を動かせます。これは、Linux内部に仮想的なネットワークが作られているからで、この仕組みがループバックです。
具体的には、ループバックという仮想的なネットワークデバイスにIPアドレスを割り振ると、そのアドレスを使って自ホストにアクセスできます。さらに、そのIPアドレスにホスト名を割り振ることで、そのホスト名によるアクセスも可能です。
なお、この機能はLinuxの元になったUNIXから引き継いでおり、そのループバックのデフォルトのホスト名が「localhost」でした。この設定は今のLinuxにも引き継がれており、同じ「localhost」が設定されています。
そのため、ループバックから自ホストに接続する際のホスト名をローカルホストと呼びます。
ローカルホストの定義
先ほど紹介したようにLinuxのループバックに設定されているデフォルトのホスト名が「localhost」です。CentOSやUbuntuなどクラウドでよく使われているLinuxサーバーでは、ループバックのホスト名を/etc/hostsファイルで設定します。
/etc/hostsの例
1 |
127.0.0.1 localhost |
この設定によりWebブラウザなどから自ホストで動作しているhttpサーバーにアクセスする際、localhostというURLを使用できます。
ローカルホストにアクセスするURL
1 |
http://localhost/ |
WebブラウザでローカルホストのURLを使う
WebブラウザでローカルホストのURLを指定する場合、ドメインにあたる場所に先ほど紹介した/etc/hostsに指定したホストを使用します。つまり、デフォルトの「localhost」をそのまま使えばドメインの代わりに「localhost」を指定できるという訳です。
次から、WebブラウザでローカルホストのURLを指定する具体的な方法を紹介します。
URLにlocalhostを使う
もし/etc/hostsに最初から記載されている「localhost」をそのまま使っている場合は、このホスト名を利用してローカルホストにアクセスできます。
もしWebサーバーにGUIでログインできるのであれば、Webブラウザで次のURLでアクセスしてみてください。
ローカルホストのURL
1 |
http://localhost/ |
また、sshなどを使いターミナルで接続する場合は、wgetコマンドで同じようにローカルホストにアクセスできます。なおwgetコマンドを実行するとHTMLが標準出力に表示されるので、リダイレクトなどを利用してください。
1 |
$ wget http://localhost/ |
URLにIPアドレスを指定する
ループバックという仮想的なネットワークにもIPアドレスが設定されており、そのIPアドレスにlocalhostというホスト名が付けられています。
そのためこの仮想的なIPアドレスをホスト名の代わりにURLに指定することで、同じホストで起動したWebブラウザからWebサーバーにアクセスすることが可能です。
IPアドレスを使ったローカルホストのURL
1 |
http://120.0.0.1/ |
これは、ループバックに設定したIPアドレスが120.0.0.1だった場合のURLの例です。
特定のURLを試す際にも使える
先ほど紹介したようにローカルホストホスト名が/etc/hostsに記述されていますが、ホスト名の他に別名を指定できます。この別名をURLのドメインの代わりに使用することも可能です。
例えば、/etc/hostsを下記のように記述します。
1 |
127.0.0.1 localhost webukatu.com |
この設定が反映されるとWi-Fiや有線LANが接続していなくても、Webブラウザで「http://webukatu.com/」にアクセスできます。ただし、実際に繋がるのは自ホストのWebサーバーなので、インターネット上の「ウェブカツ」サイトのページが開く訳ではありません。
この機能をうまく使えば、インターネットに接続しなくても開発中のシステムの動作チェックなども可能です。
httpsは使える?
現在、インターネットに公開されているWebサーバーにアクセスする場合、暗号化したHTTPプロトコルを利用するのが常識です。例えばWebブラウザによってはhttpsを使わないと警告が表示されたりします。
しかし、ローカルホストのURLではhttpsを使用しないでください。httpsでアクセスするためには暗号化されたURLが正しいホストであることを証明されなければなりませんが、ローカルホストを証明する仕組みが無いので動作しません。
同じLinux内でアクセスする場合、もちろん通信が外に漏れることは無く安全です。ローカルホストに接続する場合は、httpsではなくhttpを利用してください。
まとめ
ここまで説明したようにLinuxにはWi-Fiや有線LANに接続していなくても、仮想的なネットワークであるループバックを介して同じホスト内のWebサーバーなどにアクセスできます。そういったケースをよくローカルホストに接続すると言いますが、それはアクセスする際に使用するホスト名の「localhost」が由来です。
さらにローカルホストの別名にこれから取得するWebサーバーのドメインを指定すれば、そのURLで自ホストに接続できます。これはテストなどによく使われる機能なので、ぜひ、活用してください。