15

ユーザーがサインアップ、Web ページの作成、テンプレートの使用、カスタム CSS によるカスタマイズ、カスタム ドメインからの Web ページの提供を行うことができるサンプル SaaS アプリを作成したいと考えています。

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

さらに、「feature」が必要な場合は、カスタム ドメインを有料の機能にすることができます。有料ユーザーのみに制限するにはどうすればよいですか?

通常、Web サイトをセットアップするときは、仮想ホスト構成ファイル (apache) で指定し、エイリアスを付けて、それらのエイリアスを探して提供します。この場合、サインアップする人ごとに個別の vhost ファイルを用意したくありません。代替手段はありますか?これをどのようにプログラムできますか?注意すべき落とし穴はありますか?

私が見た 1 つの解決策は、サーバーがワイルドカード ドメイン、つまり*.domain.comを提供し、カスタム ドメインごとに個別の vhost を提供することですが、できれば避けたいと思います。

ありがとう。

4

1 に答える 1

9

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

サブドメインを提供する方法に応じて、これはいくつかの異なる方法で実行できます。

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

独自のアプリケーション サーバーを介してエントリ ポイントをコーディングしている場合 (たとえば、PHP から "Host" 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 キャッシュを使用していることを確認してください。

于 2012-06-21T19:29:31.187 に答える