7

LAMP スタックでアプリケーションを作成しており、サイトのサブドメインではなく独自のドメインを使用する機能をユーザーに提供したいと考えています。例えば。

代わりに: http://some_user.mysite.com

彼らは使用します: http://store.some_user.com/

CNAME レコードを使用してこれを提供している会社がいくつかあることは知っています。( http://help.bigcartel.com/articles/14-using-a-custom-domain ) しかし、彼らがこのエンドツーエンドをどのように達成しているかはわかりません。

私の質問は次のとおりです。

  1. このプロセスは何と呼ばれますか? (必要に応じてこれをさらに調査できます)

  2. これを提供するにはどうすればよいですか? すなわち。これを機能させるには、DNS、Apache、および PHP 側で何をする必要がありますか?

アドバイス、リンク、またはコード スニペットをいただければ幸いです。

ありがとう


アップデート

これまでのところ、ワイルドカード DNS エントリを設定できましたが、CNAME レコードが他のドメインに解決されるという問題がまだあります。例えば。

http://store.weareunified.com/ -> http://weareunified.joshstuart.com.au/

weareunified.com (これはテスト ユーザー ホストです) DNS

weareunified.com. A 111.67.3.227
store CNAME weareunified.joshstuart.com.au.

joshstuart.com.au (これはプライマリ アプリケーション ホストです) DNS

joshstuart.com.au. A 111.67.3.227
* CNAME joshstuart.com.au.
4

5 に答える 5

7

LAMPを使用してこれをセットアップしましたが、非常にうまく機能します。これが私がそれをした方法です:

  1. アプリケーションがインストールされているターゲット サーバーは、通常の A レコード (サブ) ドメインにあります。したがって、あなたの場合、アプリケーションがjoshstuart.com.auで実行されていると仮定しています。
  2. クライアントは、store.weareunified.com の DNS エントリを CNAME から joshstuart.com.au に変更する必要があります
  3. Apache サーバーには、ドメイン指定のない仮想ホスト (私の場合) があります。<VirtualHost *:80>

それでおしまい。現在、メイン アプリケーション ドメインに CNAME を使用する 70 以上のドメインがあり、それぞれが必要に応じて (リダイレクトなどなしで) 個々のサイトにサービスを提供しています。

于 2011-03-09T11:03:41.583 に答える
5

実際には、何もする必要はありません。

ユーザーは、基本的にhttp://app.some_user.com/http://some_user.app.comにマップする CNAME レコードを DNS プロバイダーに追加してもらう必要があります。

http://app.some_user.com/を探す DNS クライアントは、代わりにhttp://some_user.app.comを探すように指示されるため、これはサーバーの問題ではなく、DNS/クライアントの問題です。

Amazon は、EC2 サーバーのユーザーにまさにこの手法を推奨しています。

CNAME レコードには制限があることに注意してください。ドメインのルートに割り当てることはできません。ユーザーはhttp://some_user.com/を割り当てることはできず、 http://app.some_user.com/のみを CNAME として割り当てることができます。

于 2011-02-15T11:24:47.767 に答える
0

もう1つの可能性は、実際にユーザーのDNSホストになり、すべてのレコードを処理することです。このためのオープンソースソリューションを入手できます。(ただし、異なるサブネット上に2つのDNSサーバーを所有する必要がある場合があります)。

于 2011-03-09T10:45:31.790 に答える
0

ここにはいくつかの異なる部分があります - DNS エントリーをセットアップしてから、Apache をリクエストに応答させます。

CNAME は顧客に対して適切に設定されていますか? weareunited.com では CNAME を設定できないことに注意してください。store.weareunited.com またはルート ドメインではない他のホスト名である必要があります。

CNAME の仕組みを理解していないようです。非常に単純化されたバージョンは、ユーザーが store.weareunited.com を要求したときに、ローカル ネームサーバー (たとえば、エンド ユーザーの ISP にあるネームサーバー) です。Comcast の私にとって、それは通常、オレゴン州ビーバートンにある Comcast NS です。これは、ローカル ネームサーバーはまだホスト名を解決しておらず、キャッシュにも持っていません) は、ルート ネームサーバーに問い合わせて、ドメインの責任者を特定します。ローカル namserver は、ドメイン ネームサーバーに問い合わせてレコードを取得します。レコードは、IP アドレスである A レコード、または別のホスト名を指す CNAME である可能性があります。

ローカル名が CNAME を取得すると、このプロセスを再度実行して A レコードを取得します。最終的に IP アドレスを含む A レコードを取得すると、IP アドレスをエンド ユーザーのブラウザに返し、Web ブラウザはその IP アドレスにリクエストを送信します。

最終的に、Web ブラウザーは IP アドレスを取得し、元のホスト名をホスト ヘッダーとして使用して、この IP アドレスに要求を行います (store.weareunited.com)。そのため、ホスト名 store.weareunited.com のリクエストを受信するように Apache を設定する必要があります。

$_SERVER のような環境変数をチェックしない限り、PHP はホスト名が何であるかを気にしません...

顧客に joshstuart.com.au への CNAME を設定してもらうことができます。もちろん、weareunited.joshstuart.com.au のような追加のホスト名を作成するか、ワイルドカードを使用して、顧客に CNAME ターゲットをその一意のホスト名に設定させることもできますが、わざわざする必要はありません。私はただ持っているでしょう:

store.weareunited.com.  3600 IN CNAME   joshstuart.com.au.

joshstuart.com.au が Web サーバーに IP アドレスを渡す限り、CNAME は機能します。上で述べたように、Apache は store.weareunited.com へのリクエストを受信するため、そのホスト名の仮想ホストを設定するか、バークリーが言及しているように汎用仮想ホストを作成する必要があります (ただし、どの apache かはわかりません)。要求がドメインの適切なファイルにマップされるようにするために使用するディレクティブ...)。

于 2011-03-10T07:35:27.623 に答える