web-dev-qa-db-ja.com

複数のドメインを1つのドメイン(Amazon S3またはApache)の下の特定のURLに転送します

ユーザープロファイルと次のアドレス構造を持つサイトがあります。

  • www.mywebsite.com/user1
  • www.mywebsite.com/user2

ユーザーが自分のドメインを自分のサイトのそれぞれのページにポイント/リダイレクトできるようにする必要があります。例:

  • www.user1owndomain.com-> www.mywebsite.com/user1
  • www.user2owndomain.com-> www.mywebsite.com/user2

1つの外部ドメインは1つの内部ページのみを指すことができます。ユーザーは、CNAME/Aレコードを追加して、DNSを手動で設定します。ユーザーはドメインのみを持ち、サーバーは持たないため、.htaccessを介してリダイレクトすることはできません。

したがって、ユーザーがDNSを更新し、ドメインを私にリダイレクトできるように、CNAMEレコード/ Aレコードをユーザーに提供する必要があります。

質問は:

  1. 私のサイトがAmazonS3で実行されている場合、それを達成できますか?
  2. はいの場合、リンクできるドメインの数にどのように制限がありますか?
  3. これはS3自体を介して解決できますか、それともRoute 53を使用する必要がありますか?
  4. Linux/Apacheサーバーはこれを達成するためのより良いプラットフォームですか?はいの場合、それを設定する方法は?

専門家の意見を共有していただきありがとうございます。

1
Aleksey

したがって、ユーザーがDNSを更新してドメインを私にリダイレクトできるように、CNAMEレコード/ Aレコードをユーザーに提供する必要があります。

注意:DNSの概念をHTTP(Webブラウジング)プロトコルの概念と混同しているようです。これらは異なり、個別に対処する必要があります。

  • [〜#〜] dns [〜#〜]は、ドメイン名とIP番号(およびその他のリソースレコード)間のマッピングを提供するために使用されますが、そうではありませんここに関連します)。つまり、www.user1owndomain.com、www.user2owndomain.com、www.mywebsite.comを担当するサーバーを識別し、それだけです。

    DNSには、そのサーバーに接続する可能性のあるプロトコルの概念がないため、パス名(/ user1)などのHTTPデータはDNSの意味で無意味です。これらは、アドレス解決段階ではDNSサーバーにも通信されません。 www.domain.comのドメイン名は、これがWebトラフィックにのみ使用できることを意味するものではないことに注意してください。 www.domain.comでは通常、もう一方の端で実行されているマシンがポート80でリッスンし、Webサイトにサービスを提供しているのは慣例ですが、SSHトラフィック、メールサーバーなどにも同様にサービスを提供できます。

  • [〜#〜] http [〜#〜]、ドメインが解決されるブラウザとサーバーの間で話されるプロトコル。 www.mywebsite.comがDNSに従ってIP1.2.3.4にある場合、ブラウザはWebブラウジングの目的でポート80でそのサーバーに接続します。

Webトラフィックのリダイレクトを実行する必要がある場合、それはHTTPレベルで実行され、DNSは実行される実際のリダイレクトに最小限の影響しか与えません(DNSエイリアスまたはCNAMEレコードを使用している場合でも。以下を参照)。

私のサイトがAmazonS3で実行されている場合、それを達成できますか? (原文ママ)

はい。 2つの可能なルートがあります:

  1. Webサーバー(Apache、nginxなど)を実行しているEC2インスタンスを使用します。 www.userXowndomain.comのDNSを構成して、そのサーバーのIPアドレスに解決します。 Webサーバーを指すユーザードメインごとに Apache仮想ホスト を構成します。 このSFの質問 に従って、目的のURL(www.mywebsite.com/user1)にリダイレクトするように各仮想ホストを構成します。

    正味の効果:DNSはIPに解決され、ブラウザはIPに接続し、Apacheはドメインを識別して仮想ホストにマップし、仮想ホスト構成はHTTPリダイレクトを適切なURLに送信します。

  2. 完全なEC2インスタンスをWebトラフィック専用に実行したくない場合は、目的のためにS3バケットを使用し、ルート53と組み合わせて、トラフィックを各www.userXowndomain.comからバケットに転送できます。その後、バケットは適切なURLへのリダイレクトで構成されます。

    注:www.mywebsite.comをホストするためのEC2インスタンスがある場合、これをリダイレクトの実行にも使用できない理由はありません。これは単なる追加のApache仮想ホスト構成であるため、個別のインスタンスは必要ありません。

はいの場合、リンクできるドメインの数にどのように制限がありますか?

厳しい制限はありません。仮想ホストの数にApacheの構成が原因で(基本的にはロギングと開いているファイル記述子の数が原因で)人為的に制限が課される場合がありますが、これらは 慎重な構成 によって克服できます。

サーバーが過負荷になるなど、リダイレクトが非常にビジーである場合、ソフト制限が機能する可能性があります。これは、定期的なパフォーマンスモニタリング、および負荷分散用のサーバーの追加(または忙しい作業を専用マシンに切り離す)を通じて検出するものです。 非常にトラフィックの多いサイトを実行していない限り、これが問題になる可能性はほとんどありません。

これはS3自体を介して解決できますか、それともRoute 53を使用する必要がありますか? (原文ママ)

上記のように、DNSとHTTPを混同しないように注意してください。ユーザーのドメインに、レジストラが提供するものなど、独自のDNSサービスがある場合は、それを利用して、ウェブサーバーリダイレクトを実行しているEC2インスタンスを指すDNSレコードを設定できます。ドメインのネームサーバーをRoute53に委任することもできます。最終的な答えは、おそらく顧客との関係によって異なります。前者のソリューションでは、顧客が自分のDNSを管理できます(たとえば、メールなどの他のサービスの場合)。後者は、userXowndomain.com名前空間全体の制御を引き継ぎます。つまり、そのドメインに関連するDNSのすべての側面を構成する必要があります。これには、メール配信用のMXレコード、顧客が希望するその他のサブドメイン、エイリアス、SPFレコードなどが含まれますが、これらに限定されません。

Linux/Apacheサーバーはこれを達成するためのより良いプラットフォームですか?はいの場合、それを設定する方法は?

Linux上で実行されているApacheは、これを実現する1つの方法であり、おそらくそうすることで費用効果が高くなります。 HTTPリダイレクトを発行できるのと同じように、他にも多くのWebサービスプラットフォームがあります。構成は、各Webサーバーのそれぞれのページに従って行われ、各ドメインの仮想ホストを構成し、そのドメインのHTTPリダイレクトを構成します。


どのタイプのリダイレクトですか?

RFC 2616 のHTTP/1.1標準は、複数のタイプのリダイレクトを定義しています。 www.userXowndomain.com-> www.mydomain.com/userXをリダイレクトするためにWebサーバーが提供するリダイレクトのタイプを指定する必要があります。リダイレクトが異なれば動作も異なることを意味し、SEOなどの問題に二次的な影響を与える可能性があるため、RFCを検討することは有益です。

最も一般的なリダイレクトは、HTTPステータスコード301および307で定義されたリダイレクトです。 、「恒久的に別のURLに移動」と「一時的に別のURLに移動」にそれぞれ対応します。特に、一時的に移動されたURLは、元のURL(www.userXowndomain.com)を引き続き使用して、要求されたリソースにアクセスする必要があることを意味します。ユーザーエージェントは、www.mywebsite.com /を永続的に使用するためにレコードを更新しないでください。初期URLとしてuser1。

「フレームセット」を使用したリダイレクトも過去に使用されています。これは、各ユーザーのドメインで単一のWebページをホストする場合です。これは、正しいURLを指し、単一のフレームで tag を使用します。このアプローチは一般的に避けるべきです。


「リダイレクト」としてDNSエイリアスを使用する

特にDNSは、あるドメインのDNSリターンを別のドメインの出力にエイリアスするCNAMEまたは「エイリアス」レコードを提供するため、WebブラウジングにおけるDNSとHTTPプロトコルの役割について混乱することがよくあります。

DNSエイリアスは、Webブラウザにとって何もないことを意味します。 DNSエイリアスは、ドメインXの要求は、ドメインYが要求されているかのように応答する必要があることをDNSリゾルバーに通知するだけであり、チェーンをたどることにより、最終的にブラウザが接続するIPアドレスに到達する必要があります。次に、ブラウザはそのアドレスに接続しますが、最初にリクエストされたドメイン(www.userXowndomain.comなど)と通信していると信じています。

DNSのwww.mywebsite.comドメインを指すwww.userXowndomain.comを使用して、各ユーザードメインのCNAMEを使用してリダイレクトを実装できます。ただし、www.userXowndomain.comの各リクエストに一致するように、仮想ホストなどでWebサーバーを構成し、www.mywebsite.com/userXにリダイレクトする必要があります。 DNSは、ブラウザにWebサーバーへのアクセス方法を指示するだけです。代わりに、リダイレクトURLが何であるかをブラウザに通知しません。

ただし、この構成には欠点があります。ゾーンのルート(つまりhttp:// userXowndomain.com)をリダイレクトする場合は、ゾーンのルートでCNAMEを使用しすぎると、他のデータが共存してはならないため、 制限 が発生します。 RFCに準拠したゾーンのルート(メール配信用のMXレコードなど)。ユーザーに提供するサービスによっては、これは問題にならない場合もあれば、ショートッパーになる場合もあります。


レジストラを使用しますか?

多くのドメインレジストラは、ドメイン名登録で基本的な301または307 HTTPリダイレクトを標準で提供しているため、独自のサービスを構築するのではなく、サービスを使用することでかなりの複雑さを回避できる場合があります。

3