Как разрешить пользователю использовать свое собственное доменное имя для размещенной службы? - PullRequest
3 голосов
/ 28 сентября 2008

Я работаю над веб-приложением ASP.NET MVC, которое позволяет людям публиковать контент, но помимо публикации контента на удаленном сервере, я хочу, чтобы люди могли напрямую использовать свое доменное имя. Например, пользователь «Tom» может указать свое доменное имя TomSite.com на http://www.mywebapp.com/user/tom,, но также будет отображен дополнительный путь. Например, TomSite.com/path будет сопоставлен с www.mywebapp.com/user/tom/path, и это будет прозрачно для веб-посетителя. Посетитель никогда не увидит «mywebapp.com» где-либо на TomSite.com.

Я думаю, что Smugmug.com предоставляет такую ​​услугу, чтобы позволить людям использовать свое собственное доменное имя для фото портфолио. Я хочу добиться того же результата.

Как я могу это сделать? Спасибо!

Ответы [ 4 ]

2 голосов
/ 28 сентября 2008

Это требует нескольких шагов.

Сначала вы должны выяснить, как ваши пользователи будут настраивать свой домен для записи 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 вам необходимо реализовать маршруты для этой конкретной цели. Создайте пользовательский класс, унаследованный от Route, который также учитывает домен.

1 голос
/ 28 сентября 2008

Smugmug (кого вы упомянули) заставляют своих пользователей настраивать запись CNAME, которая будет псевдонимом URL для раздела личных фотографий пользователя. Для большинства пользователей это, вероятно, потребует, чтобы они связались со своим хостом или искали файлы справки, чтобы все настроить.

Таким образом, хотя www.tomsite.com может прозрачно обслуживать страницы, размещенные на сайте www.mywebapp.com, пользователям придется приложить какие-то усилия. Чтобы сделать его полностью прозрачным, вам потребуется какая-то договоренность с пользовательский веб-хостинг (Smugmug, похоже, имеет такое соглашение с GoDaddy).

Я сомневаюсь, что вы сможете настроить такую ​​интеграцию со всеми веб-хостами, поэтому единственное полное решение - это размещение веб-сайтов ваших пользователей самостоятельно (я не знаю достаточно о вашей более широкой ситуации, чтобы определить, это разумное решение).

Примечание: установка псевдонима на вашем собственном веб-сервере (он же переписывание URL) не будет работать, если вы сами не разместите их сайт, так как очевидно, что люди, выбирающие домен вашего пользователя, не придут на ваш сервер. 1007 *

1 голос
/ 28 сентября 2008

Направьте дружественное имя каждого клиента на внешний IP-адрес вашего веб-сервера.

Используйте IIS для разрешения дружественного имени, указанного в запросе заголовка узла, на логический веб-сайт, который вы хотите доставить на это дружественное имя. IIS удачно сопоставит веб-сайт и виртуальную папку с одной и той же папкой в ​​файловой системе. Создать сайт для каждого клиента. Затем привяжите этот сайт к дружественному имени клиента.

Не забудьте сопоставить веб-сайт по умолчанию только с вашими именами. Если вы оставите его в беспорядочном режиме (сопоставленном с «*»), результаты будут непредсказуемыми.

Чтобы установить отображение заголовка хоста

Выберите Веб-сайт по умолчанию в узле Сайты . В правой части панели Actions щелкните Bindings ... , чтобы открыть диалоговое окно Site Bindings . Там будет список привязок, вероятно, содержащий одну запись, которая говорит http * 80. Выберите это и нажмите кнопку Редактировать ... . Установите Имя хоста на свое собственное имя.

Запустите IIS7 Manager и для каждого сайта клиента создайте веб-сайт под узлом Sites . Укажите путь к файлу и привязку заголовка узла при создании каждого веб-сайта. Очевидно, что привязка заголовка хоста (имя хоста) должна быть дружественным именем клиента.

0 голосов
/ 28 сентября 2008

Просто сделайте новую запись в настройках вашего веб-сервера tomsite.com прямо на ваш mywebapp.com/user/tom/ путь?

Смотри как псевдоним:)

Конечно, так как вы работаете на asp.net/windows, я думаю, вам придется углубиться в IIS для автоматизации такого рода вещей. Если бы вы работали на Apache, он бы добавил 3 простые строки в httpd.conf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...