ユーザーがホストされたサービスに独自のドメイン名を使用できるようにするにはどうすればよいですか?
-
02-07-2019 - |
質問
私は、ユーザーがコンテンツを公開できるASP.NET MVC Webアプリに取り組んでいますが、コンテンツをリモートサーバーに公開する以外に、ユーザーがドメイン名を直接使用できるようにします。たとえば、ユーザー&quot; Tom&quot;ドメイン名TomSite.comが http://www.mywebapp.com/user/tom <を指すようにすることができます、ただしサブパスもマップされます。たとえば、TomSite.com / pathはwww.mywebapp.com/user/tom/pathにマップされ、これはWeb訪問者に対して透過的です。訪問者には「mywebapp.com」が表示されません。 TomSite.comの任意の場所。
Smugmug.comは、このようなサービスを提供して、人々が写真ポートフォリオに自分のドメイン名を使用できるようにしていると思います。同じ結果を達成したい。
これを行うにはどうすればよいですか?ありがとう!
解決
これには複数の手順が必要です。
最初に、ユーザーがサイトのCNAMEレコードを持つようにドメインを構成する方法を見つける必要があります。これは、教育が最良のさまざまな方法で実現できます。ホスティングプロバイダーとパートナーシップを結ぶには、大量のボリュームが必要です。
IISでは、各ホスト名を手動で追加する必要があります(ただし、スクリプトを使用してこれをアーカイブすることもできます)か、サイト専用の専用IPアドレスを持つ必要があります。
ドメインをアカウントに関連付ける必要もあります。ユーザーはこれを自分で追加する必要があり、おそらく、ドメインがサーバーを指していることを確認するチェックをインターフェイスに追加します。このコードは次のようになります(System.Net名前空間を含めることを忘れないでください)。
if (Dns.GetHostEntry("www.user.example.com").HostName == "www.example.com")
{
// www.user.example.com is a CNAME for www.example.com
}
ASP.NET MVCプロジェクトでは、この特定の目的のためにルートを実装する必要があります。ドメインを考慮に入れたルートから継承するカスタムクラスを作成します。
他のヒント
Smugmug(あなたが言った人)は、ユーザーの個人的な写真セクションのURLをエイリアスするCNAMEレコードをユーザーにセットアップさせます。ほとんどのユーザーにとって、すべての設定を取得するには、おそらくホストに連絡するか、ヘルプファイルを検索する必要があります。
したがって、www.tomsite.comはwww.mywebapp.comでホストされているページを透過的に提供できますが、ユーザーは何らかの努力をする必要があります。完全にシームレスにするには、ユーザーのWebホスト(SmugmugはGoDaddyとそのような配置を持っているようです)。
すべてのWebホストとそのような統合をセットアップできるとは思わないので、唯一の完全な解決策はユーザーのWebサイトを自分でホストすることです(それ以上の状況を判断するのに十分な状況はわかりません)合理的な解決策です。)
注:独自のWebサーバーでエイリアスを設定する(別名URL書き換え)は、サイトを自分でホストしない限り機能しません。明らかに、ユーザーのドメインから取得したユーザーは、最初はサーバーに到達しません。 / p>
各顧客のフレンドリ名がWebサーバーの外部IPアドレスを指すようにします。
IISを使用して、ホストヘッダー要求で指定されたフレンドリー名を、そのフレンドリー名に配信する論理Webサイトに解決します。 IISは、Webサイトと仮想フォルダーの両方をファイルシステム内の同じフォルダーにマップします。顧客ごとにWebサイトを作成します。次に、そのWebサイトを顧客のフレンドリ名にバインドします。
デフォルトのWebサイトを自分のフレンドリ名にのみマップすることを忘れないでください。無差別モード(&quot; *&quot;にマッピング)のままにすると、結果は予測不能になります。
ホストヘッダーマッピングを設定するには
サイトノードの下のデフォルトWebサイトを選択します。右上の[アクション]ペインで[バインディング... ]をクリックして、[サイトバインディング]ダイアログを開きます。バインドのリストがあり、おそらくhttp * 80という1つのエントリが含まれています。これを選択し、[編集... ]ボタンをクリックします。 ホスト名を独自のフレンドリ名に設定します。
IIS7 Manager を実行し、顧客サイトごとに Sites ノードの下にWebサイトを作成します。各Webサイトの作成中に、ファイルパスとホストヘッダーバインディングの両方を設定します。明らかに、ホストヘッダーバインディング(ホスト名)はその顧客のフレンドリ名でなければなりません。
Webサーバー設定tomsite.comでmywebapp.com/user/tom/パスに直接新しいレコードを作成するだけですか?
エイリアスのように表示します:)
もちろん、あなたはasp.net/windowsベースなので、この種のものを自動化するにはIISを深く掘り下げる必要があると思います。 Apacheを使用している場合、httpd.confに3つの単純な行を追加することになります。