レコードまたはcname

レコードまたはcname

私は、クライアントが独自のサブドメイン(つまり、基本的にはワイルドカード サブドメイン)を作成できるアプリをホストするサーバー(Ubuntu + Apache)を持っています。

弊社のサーバー上の独自のサブドメイン (client.app.com) で、独自のドメイン (www.client.com) を指定したいというクライアントがいます。これは透過的に行われるべきであり、誰かが www.client.com と入力すると、URL は引き続き www.client.com と表示されますが、すべてが透過的に client.app.com で動作します。

DNS では、IP アドレスを指す A レコードを作成する必要がありますか、それとも client.app.com を指す cname を作成する必要がありますか?

どちらの場合でも作成する必要がある vhost に違いはありますか?

答え1

DNS では、IP アドレスを指す A レコードを作成する必要がありますか、それとも client.app.com を指す cname を作成する必要がありますか?

client.app.com を指す CNAME を使用する必要があります。これを行う理由はたくさんありますが、おそらく最も良い理由は、サーバーの IP アドレスが変更された場合に変更が少なくなることです。client.app.com のエントリのみを更新すれば、それに CNAME されている他のすべては自動的に更新されます。

他の理由としては、他の投稿者の 1 人が言及したように、MX レコードと同じ名前の A レコードを持つことができないこと、およびホストは 1 つの「本当の名前」(A レコード) のみを持つべきであり、同じホストを指す他のレコードはエイリアス (CNAME) であるべきであるという一般的な考え方があります。もちろん、1 つの A レコードが複数の IP と複数のホストを指す場合、この考え方は成り立ちません (ただし、クライアントが CNAME を使用するもう 1 つの良い理由です。サービスが人気になり、同じサービスを提供する他のホストに負荷分散して拡張する必要がある場合、何も変更せずに顧客にそのメリットを提供したいと考えるでしょう)。(もちろん、負荷分散と拡張には多くの方法があり、DNS に縛られない方法を簡単に選択することもできますが、それは実装によって異なります。)

どちらの場合でも作成する必要がある vhost に違いはありますか?

選択した DNS 方法に関係なく、Apache が他の名前を受け入れるように設定されていることを確認する必要があります。

誰かが www.client.com と入力すると、URL は引き続き www.client.com と表示されますが、すべてが透過的に client.app.com で動作します。

もちろん、Apache のドキュメントを自分で調べて以下の内容を確認する必要がありますが、これを行うには 2 つの方法が考えられます。

  1. UseCanonicalName OffServerAliasそれぞれ内側にVirtualHostエントリ:

    UseCanonicalName Off <VirtualHost *:80> ServerName www.client.com ServerAlias client.app.com DocumentRoot /www/client </VirtualHost>

  2. 複数のServerNameそしてVirtualHostエントリー:

    <VirtualHost *:80> ServerName www.client.com DocumentRoot /www/client </VirtualHost> <VirtualHost *:80> ServerName client.app.com DocumentRoot /www/client </VirtualHost>

どちらの方法でも、必要な動作のために URL を適切に生成するには、HTML と関連するスクリプトが「正しい動作」を実行していることを確認する必要があることに注意してください。

ここには多くの良い例と興味深い議論もあります:http://httpd.apache.org/docs/2.4/vhosts/mass.html話題になっている。

関連情報