
ユーザーに公開プロフィールを提供するオンライン サービスを運営しています。ユーザーは でサインアップして自分のプロフィールを閲覧できますwww.example.com/users-name
。
ユーザーが自分のドメイン名でこのプロフィールにアクセスできるプレミアムサービスを提供したいと考えています(サイト自体は私がホストしています)。つまり、ユーザーが登録するとusers-custom-domain.com
、そのサイトにアクセスして、上記と同じプロフィールに加えて、いくつかのプレミアム機能を見ることができます。
これをサポートするには、どのようなインフラストラクチャが必要ですか? おそらく、ユーザーは自分の DNS を私のサーバーに向ける必要がありますか? Heroku などのクラウド ホストで製品をホストしている場合、これは実現できますか? カスタム ドメインを使用する各ユーザーは、サイロ化された Web アプリケーションにアクセスすることになりますか? たとえば、クラウド インフラストラクチャを使用する場合、各「インスタンス」は新しいアプリケーションをスピンオフする必要がありますか、それともこれを何らかの方法で共有できますか?
これを実現する方法はたくさんあることはわかっていますが、どこから始めればよいかわからないので、アイデアやベストプラクティスを探しています (例: about.me や tumblr でこれを実現する方法)。
答え1
必要なもの:
- DNS は、ユーザーのドメイン名を、あなたが管理する名前またはアドレスに変換します。そのサービスをホストして必要なレコードをハードコードすることも、ユーザーが独自の DNS を管理してレコードを自分で設定することもできます。ユーザーがレコードを CNAME する名前をドメインに用意することをお勧めします。Github が番号の再割り当てを余儀なくされたときに判明したように、ユーザーに IP アドレスをハードコードさせると、状況が複雑になります。
- Web サービス インフラストラクチャは、ユーザーのドメインに対するリクエストに応答し、そのドメインにどのコンテンツを提供するかを知る必要があります。通常、これには、ユーザーが自分のプロファイルで「このようなドメインをあなたに指定します」と宣言する操作を行うことが含まれ、その後、バックグラウンドで自動化された配管が行われ、Web サーバー層が適切な処理を実行するように構成されます。
アプリケーション内のすべては共有できます。各ユーザーにサービスを提供するために、別々に何かを立ち上げる必要はまったくありません。プロバイダーごとの実装は、自分で考え出す必要があります。可能性と組み合わせが多すぎるため、包括的なレビューを行うことはできません。