======================================================================= 110:hostsファイルを変更してドメイン登録と異なるIPアドレスにアクセスする ======================================================================= .. maigo:: 名前ベースのバーチャルホストを設定したらssh port forwarding経由でアクセスできなくなった * 後輩W:ssh port forwardingでlocalhostの8000番ポートを開発サーバーの80番ポートに転送したんですが、ブラウザから、 ``http://localhost:8000/`` にアクセスしてもサイトが表示されませんでした。 * 先輩T:Nginxの設定で ``localhost`` が不正なドメイン名として扱われてるんじゃない? * 後輩W:正しいURLは ``http://app.example.com/`` ですけど、今はIP制限しているので社外からはアクセスできないんです。こういう場合、どうすればいいですか? * 先輩T:端末のhostsファイルを変更して、ドメインのIPを指定すれば良いよ。 ssh port forwardingはlocalhostのポートへのアクセスを転送する仕組みです。 このため、ブラウザで転送先のサーバーにアクセスしようとした場合、ドメイン名はlocalhostを指定する必要があります。 しかし、通常そのような正式名以外のドメイン名でのアクセスは拒否するよう設定されています。 ベストプラクティス ======================== :index:`hostsファイル` を変更して、ドメイン名に任意のIPアドレスを関連づけます。 hostsファイルは :index:`DNS` よりも先に参照される、IPアドレスとドメイン名の対応を記載したテキストファイルです。 今回の例では、以下の内容を ``/etc/hosts`` ファイルに追記します [#hostsfile]_ 。 .. code-block:: text :caption: ``/etc/hosts`` 127.0.0.1 app.example.com これで、 ``app.example.com`` への通信はIPアドレス ``127.0.0.1`` へ送信され、ssh port forwarding経由でサーバーへリクエストが送られます。 このように 閉じられた環境のWebサイトにアクセスするときに使うと便利です。 ``/etc/hosts`` を変更すれば、存在しないドメインの定義も行えます。 この方法で、DNSに登録される前に正式なドメイン名を使った動作確認をしたり、DNSの切り替え検証などに利用できます。 .. [#hostsfile] Windowsでは ``C:\Windows\System32\drivers\etc\hosts`` にあります .. omission:: 関連 ========== * :doc:`106-ssh_port_forwardingによるリモートサーバーアクセス` * :doc:`109-不正なドメイン名でのアクセスを拒否する`