#hostsを設定すると
hostsファイルに記述する事で、そのホスト名に対してアクセスした際に対象IPへアクセスできるようになる。
hostsファイルの場所は
WindowsOS
C:¥WINDOWS¥system32¥drivers¥etc¥
Linux
/etc/hosts
身近な例でいうと「localhost」。
これは実は「127.0.0.1」が「localhost」というホスト名で設定されている。(127.0.0.1は自分自身へのアクセスとして定義されている)
だからローカルで開発する時にlocalhostって何気なく入力してもきちんと接続できるっていう仕組み。
記述の仕方は、hostsファイルにIPとホスト名を
***.***.***.*** hogehoge.com
みたいな感じで記述するだけ。
それでhogehoge.comへアクセスすると、そのコンピュータからのアクセスはすべて対象IPへ繋ぎに行くようになる。
##ホスト名設定すると何が便利なの?
じゃあそれすると何が便利なの?という話。
開発者目線で考えると例えばこういう時。
DBアクセス先がローカル開発環境はlocalhostのDBで
本番環境はWebサーバとは別のDBサーバだった場合。
ソースとしては本番用とローカル用でDBアクセス先を分けて記述しなければならない。
そういう時に
ローカルマシンhosts
127.0.0.1 hogehogeDBserver
本番環境マシンのhosts
***.***.***.*** hogehogeDBserver
と設定し、常にhogehogeDBserverに接続するようにコーディングしてあげればソースをわざわざ分ける必要がなくなる。DBサーバの台数が増えたりする場合はより便利になる。
###DNSについて
これに関しては自分自身も詳しく分かっておらず、設定もしたことないのであくまでも脱初心者向けという意味でふんわりな感じで。
DNSとは(Domain Name System)の略です。
じゃあ前述のhosts設定とどう違うの?というと、hosts設定はあくまでもわりと小規模なネットワーク環境で便利なものである。なぜかというとWebサーバの台数もDBサーバの台数もめちゃくちゃ増えた場合、それぞれのWebサーバのhostsファイルに正しく設定して管理する事は非常に大変だから。
そして何より大事なのがあくまでも内部向けのアクセスしか管理できないこと。
そこで利用されるのがDNS。
DNS専用のサーバ(入口的なもの)を用意する事で、外部からドメインネームでアクセスがあった際にも正しく接続先を振り分けられるようになる。
例でいうとyahoo.co.jpとかgoogle.com。
おおまかな流れでいうと
1.ユーザーのPCからドメイン名でアクセス
↓
2.プロバイダがまず自身のDNSサーバから対象ドメイン名をチェック
↓
3.見つからない場合は上位のDNSサーバに問い合わせ
↓
4.上位のDNSサーバが情報をプロバイダに渡してあげる
↓
5.プロバイダからユーザーに接続先が伝えられアクセス可能に
こんな仕組みを利用する。外部DNSサーバと内部DNSサーバを構築し、
外部DNSサーバには「上位のDNSサーバへ『自分の利用しているドメインはこれですよ』と伝える」役割を、
内部にも専用のDNSサーバを設け前述したhosts設定のような役割を持たせることで、振り分けが楽になる。