ドメインとは、インターネット上の住所のようなものです。例えば、k-work.space や google.com などがそれにあたります。これらのドメインを使って、特定のウェブサイトにアクセスできます。
ちなみに、k-work.space/articles/xxTQU9uLIMIkWAHxwB1u のように、URLに続く部分(/articles/xxTQU9uLIMIkWAHxwB1u)は「URLパス」と呼ばれ、アクセスしたいリソースを指定するために使われます。
ドメインは、あくまで人間にとって覚えやすく理解しやすいものです。実際にウェブサイトにアクセスする際、コンピュータは「IPアドレス」を使って通信相手を識別します。
では、なぜドメインでアクセス先を識別できるのでしょうか? それは、DNS(ドメインネームシステム)がドメインとIPアドレスをマッピングして管理しているからです。
例えば、ドメインにアクセスが来ると、DNSはそのドメインを検索し、対応するIPアドレスを返します。その後、コンピュータはそのIPアドレスにアクセスすることでウェブページを表示します。
DNSでは、Aレコード(Address Record)を使って、ドメインとIPアドレスを紐づけています。これにより、ドメイン名を入力すると、DNSが自動的に対応するIPアドレスに変換してくれるのです。
DNSには、Aレコード以外にもさまざまなレコードがあります。代表的なものをいくつか紹介します。
AAAAレコード(IPv6 Address Record)
AレコードがIPv4アドレスを使用するのに対して、AAAAレコードはIPv6アドレスを使用します。これにより、IPv6対応のIPアドレスを指定できます。
TXTレコード(Text Record)
任意のテキスト情報をDNSに追加するためのレコードです。主に認証情報やドメイン所有権の確認などに使われます。
CNAMEレコード(Canonical Name Record)
CNAMEレコードを使用すると、ドメイン名を別のドメイン名にエイリアス(別名)として設定できます。これにより、複数のドメインを1つのドメインに関連付けることができます。
このブログはGoogle CloudのCloud Runで動いているため、Cloud Runを前提に説明します。
例えば、a.k-work.space と b.k-work.space の2つのサブドメインを設定している場合、それぞれのサブドメインにはCNAMEレコードが設定されています。どちらのCNAMEレコードもghs.googlehosted.comを指しています。
この場合、どちらのサブドメインにアクセスしても、DNSを経由してghs.googlehosted.comにアクセスが転送されます。しかし、ghs.googlehosted.comではHTTPリクエストのホストヘッダーを参照して、どのサブドメインに対するリクエストかを判断します。これにより、a.k-work.spaceとb.k-work.spaceそれぞれに対応する適切な処理が行われます。