Как разрешить пользователю использовать собственное доменное имя для размещенной службы?

StackOverflow https://stackoverflow.com/questions/144630

Вопрос

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

Другие советы

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

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

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

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

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

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

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

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

Выбирать Веб-сайт по умолчанию под Места узел.в Действия панель вверху правой кнопкой мыши щелкните Привязки... открыть Привязки сайта диалог.Будет список привязок, вероятно, содержащий одну запись с указанием http * 80.Выберите это и нажмите кнопку Редактировать... кнопка.Набор Имя хоста на свое дружелюбное имя.

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

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

Смотри, это псевдоним :)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top