2012-05-03 10 views
10

ユーザーがサインアップしたり、Webページを作成したり、テンプレートを使用したり、カスタムCSSを使用してカスタマイズしたり、Webページを提供できるSaaSアプリケーションの例を作成したいオフカスタムドメイン。Saas Appのサブドメインを指すカスタムドメインを提供する方法

メディア/スタイルシート/ jsファイルとともに、S3 /その他のCDNにテンプレートを保存することを検討していました。すべてが技術的に可能ですが(実用的なことは議論の余地があります)。とにかく、このケースでカスタムドメインからウェブサイトをどうやってどうやって提供するかを考え出すのは苦労していましたか?たとえば、登録すると、subdomain.domain.comのアドレスを取得できます。 customerdomain.comが入力されると、それはcustomerdomain.domain.comと同じコンテンツを提供していますように、しかし、どのように彼らはcustomerdomain.comを指してください、と私は「feature」することにより、カスタムドメインは可能性が支払った機能を持つようにしたい場合は、URLは、さらに

customerdomain.comのまま。有料ユーザーのみに制限するにはどうすればよいですか?

通常は、ウェブサイトを設定するときに、仮想ホスト設定ファイル(Apache)に指定し、エイリアスを指定すると、そのエイリアスを検索して提供します。この場合、私はサインアップする人それぞれに別々のvhostファイルを持たせたくありません。代わりがありますか?これをどのようにプログラムできますか?知っているべきことがありますか?

私が見てきた解決策の1つは、サーバにワイルドカードドメインを提供することです。すなわち、*.domain.comと、各カスタムドメインごとに別々の仮想ホストを作成することができます。

ありがとうございました。

答えて

6

カスタムドメインは、通常、CNAME DNSレコード(DNSレコードのシンボリックリンクの一種)を介して行われます。 customerdomain.comがcustomerdomain.domain.comのエイリアスであることを示すCNAMEレコードを作成するように、顧客(通常はcustomerdomain.comを管理している)に指示します。次に、customerdomain.domain.comへのリクエストを処理するのと同じように、customerdomain.comへのリクエストを解釈するために独自のサーバーを設定する必要があります。

サブドメインの配信方法によっては、これはいくつかの方法で行うことができます。

お客様ごとにvhostファイルがある場合は、クライアントが提供しているカスタムドメイン用の「ServerAlias」ディレクティブを追加する必要があります。

独自のアプリケーションサーバーを使用してエントリポイントをコーディングする場合(PHPから「ホスト」HTTPヘッダーを読み取って顧客名を設定するなど)、そのコードを調整して外部の要求を解釈する必要がありますカスタムドメインの独自のデータベースに従ってドメインを作成します。あなたはこれにまっすぐなDNSを使うことさえできます!ライン上

何か:

if http "host" header does not end in domain.com: 
    cname = get_cname_record(http "host" header value) 
    if cname does not end in domain.com: 
     return error 404 
    else: 
     site = first part of cname 
else: 
    site = first part of http "host" header 

次に、あなたはあなたの「カスタムドメインデータベース」としてDNSを使用することができます。 DNSキャッシュを使用していることを確認してください。これらのクエリは、1回のリクエストごとに実行されるためです。

+0

あなたの擬似コードは、ソリューションの理解に役立ちました。サーバー上のDNSキャッシュについては、デフォルトではありませんか?私はDNSクエリがOS(ubuntu)によってキャッシュされていることを意味します。私はそれのために何か特別なことをする必要がありますか? – Nasir

+0

"get_cname_record"の実装方法によって異なります。 gethostbyaddr()または派生物(おそらくオプション)を使用すると、システムは通常、ある種のキャッシュを提供します。しかし、これを使ってトラップに陥らないように、ルックアップの束を繰り返してベンチマークしてください。私はそれが起こるのを見ました、ちょうどFYI。 – GomoX

関連する問題