Индивидуальное сопоставление доменов в Azure

У меня есть.NET MVC 3, приложение SQL Server, работающее на Azure. Он имеет 2 экземпляра веб-роли и один экземпляр рабочей роли.

В настоящее время мы разрешаем клиентам вставлять iFrame (я знаю, это не идеально, но без меня) в их сайт, который показывает наш контент.

Чтобы получить этот контент, у нас есть общедоступная страница, которая принимает уникальный идентификатор компании. Например, Stackru будет использовать "http://myapplication.com/stack-overflow". Это вернет HTML-страницу, специфичную для компании.

Нам нравится идея привязать запись CName на стороне клиента непосредственно к их контенту в нашем приложении. Из того, что я понимаю, мы должны принять, что в случае Stackru'stack-overflow.myapplication.com' найдет извлечение подкаталога и вернет содержимое по адресу http://myapplication.com/stack-overflow.

Может кто-нибудь пролить свет на то, как это делается в Azure?

Любая помощь будет много учеников.

С уважением, Брайан

1 ответ

Решение

Это будет то же самое для Azure и для любого развернутого приложения IIS. Вам просто нужно сопоставить все пользовательские субдомены как CNAME с вашим доменом cloudapp.net. Не изменяйте ничего в ваших определениях сервиса и / или файлах конфигурации. И в вашем приложении есть простая логика, которая проверяет:

Request.Headers["host"]

Этот заголовок будет иметь полное имя хоста (т.е. stack-overflow.myapplication.com). Теперь вы можете проанализировать URL-адрес, извлечь поддомен и сопоставить его с соответствующим ресурсом.

Другой подход - использовать модуль перезаписи URL для IIS и создать нечто похожее на то, что я делал с веб-сервером Apache и mod_rewrite (я думаю, именно то, что вам нужно). Я не уверен, что вы можете использовать мои правила переписывания Apache 1:1 для модуля перезаписи IIS, но это было бы хорошей отправной точкой. Обратите внимание, что теперь (начиная с Azure SDK 1.3) модуль перезаписи URL включен по умолчанию в полной версии IIS Azure).

Другие вопросы по тегам