Как создать поддомен для IIS7 программно? - PullRequest
9 голосов
/ 11 января 2011

Я пишу SaaS-приложение на C # / ASP.NET, размещенное на IIS7.Я хочу создать персональный поддомен для каждого зарегистрированного клиента, например, fred.mydomain.com, bob.mydomain.com, каждый из которых будет указывать на одно и то же приложение, но с разным скином для каждого клиента.

Как создать эти субдомены программно?

Ответы [ 2 ]

6 голосов
/ 22 апреля 2011

Разумеется, понимая, что кто-то уже ответил на ваш вопрос, сказав, что нужно перенаправить сервер, может показаться, что проще всего просто получить переменную хост-сервера.

  1. Настройте IIS так, чтобывсе входящие запросы (независимо от заголовка узла) указывают на это одно приложение.Все сайты должны иметь уникальное имя хоста или уникальный порт в IIS, поэтому вы должны настроить это следующим образом:

    1. Привязка сайта к порту по умолчанию 80.

    2. В поле Имя хоста ничего не указано.Это также, как веб-сайт по умолчанию настраивается по умолчанию при первой установке IIS.

  2. Определите статический IP-адрес вашего сервера и сообщите каждому новому клиентукоторый регистрирует указывать DNS своего домена на этот IP.Или, если вы являетесь владельцем доменного имени, настройте DNS-запись для перехвата: * .mydomain.com - указывает на IP-адрес вашего сервера.

  3. В вашем приложении проверьте наличиетекущий заголовок хоста, чтобы обеспечить другой скин или главную страницу.

Это должно захватить заголовок хоста из кода:

  Request.ServerVariables["HTTP_HOST"]

Оттуда вы можетепротестируйте его значение с набором значений базы данных, которые вы должны определить, какую таблицу стилей MasterPage / css / и т. д. вам нужно загрузить, основываясь на этом URL.Имейте в виду, что если вы сделаете такой ловушку, как этот, вам нужно будет указать неверный URL-адрес, поэтому у вас не будет скина для него.

6 голосов
/ 11 января 2011

Используйте URL Rewrite для IIS7, чтобы сопоставить все запросы, например user.mydomain.com (где пользователь не является www, mail или другими существующими реальными поддоменами), с mydomain.com/myapp?id=user Затем в скрипте обработайте все, что вам нужно.

Вам не нужно добавлять правило для каждого созданного пользователя.Для этого просто создайте одно общее правило.

И, кроме того, на DNS-сервере вашего сервера вам необходимо перенаправить * .mydomain.com (где * не является www, почтой или другими существующими реальными поддоменами) на мой домен.com IP.Это довольно просто.У вас уже есть записи DNS для существующих поддоменов.Просто добавьте * .mydomain.com и укажите mydomain.com.Это сделает DNS часть хитрости.Другая часть находится в перезаписи URL

...