Поддоменные поддомены в IIS7. Можно ли сделать так, как в Apache? - PullRequest
30 голосов
/ 19 января 2009

Можно ли настроить IIS7 для достижения той же функциональности, что и в Apache в отношении доменов подстановочных знаков? Меня интересует маршрутизация пользователя в веб-приложении ASP.NET на основе пользователя субдомена, используемого в URL.

Нечто подобное описано здесь:

http://steinsoft.net/index.php?site=programming/articles/apachewildcarddomain

Спасибо

Ответы [ 6 ]

40 голосов
/ 14 апреля 2009

Ответ: Нет, IIS7 (все еще) не поддерживает подстановочные имена хостов (см. this ). Если вы хотите обслуживать несколько доменов на одном веб-сайте, пока что единственным решением для этой проблемы, как предположил notandy, является использование выделенного IP-адреса и его использование с DNS, который поддерживает подстановочные знаки.

2013 Обновление

Для полноты, IIS8 пока не имеет этой функции.

2016 Обновление

Наконец, IIS 10 в Windows 2016 поддерживает поддомены подстановочных знаков.

16 голосов
/ 06 марта 2009

Поддерживает ли IIS заголовок хоста с подстановочными знаками? Могу ли я захватить и перенаправить * .mydomain.com на один веб-сайт?

Ответ - Да / Нет. Да потому что ты возможность перенаправить * .mydomain.com на один Веб-сайт. Нет, потому что магия в DNS а не IIS.

Вот как вы это делаете:
В IIS MMC, настроить веб-сайт без хоста заголовок, затем назначьте IP-адрес сайт. (если у вас есть один IP-адрес в поле, то вы можете пропустить это). При этом веб-сайт будет связан с конкретный IP и будет слушать всех HTTP-запросы отправляются на IP, и вы сделано :)

Следующий шаг - убедиться, что ваше имя разрешение работает для подстановочного знака запрос и ответ с правильным IP адрес. Если вы используете Microsoft DNS сервис, он не позволит вам создать '*' Запись (если вы уже создал доменную зону в DNS MMC), вам нужно сделать следующее:

  1. Перейдите к %windir%\system32\dns\
  2. Найти файл зоны. Э.Г.
    mydomain.com.dns, откройте его с помощью Блокнота
  3. Добавить запись. Э.Г.
    * A IP.IP.IP.IP
  4. Сохранить файл данных зоны
  5. Перезагрузить данные зоны в DNS MMC.

Обратите внимание, что, делая это, все * будет ответ на IP, который вы настроил ранее. Например. abc.mydomain.com, www.mydomain.com, K2k.mydomain.com и т. Д.

Чтобы убедиться, что он работает, попробуйте ping утилита ping (insert anything here).mydomain.com и ты должен получать ответы от IP.IP.IP.IP

Затем попробуйте просмотреть, http: // (вставить что-нибудь здесь) .mydomain.com /, вы должен получить ту же веб-страницу, что вы настроили.

Источник

5 голосов
/ 23 мая 2012

Вы не можете создать подстановочный знак (*) Запись в DNS Microsoft, но вы можете создать подстановочный знак CNAME. Если все, что вы пытаетесь сделать, это направить все субдомены на определенный IP, это сработает. Например, если у вас есть запись A для www.mydomain.com, вы можете добавить запись CNAME для *.mydomain.com и указать ее на www.mydomain.com. Имя хоста в заголовке запроса по-прежнему будет поддоменом, поэтому ваше веб-приложение должно быть в состоянии перехватить его и обработать, если хотите.

4 голосов
/ 14 августа 2014

Вы можете использовать IIS, если вы используете установщик веб-платформы (http://www.microsoft.com/web/downloads/platform.aspx) и устанавливаете модуль «URL Rewrite». Если вы добавляете запись «A», например «* .example.com», это позволяет всем субдомены для отправки на ваш сервер IIS. На сервере IIS вы просто добавляете правило перезаписи URL на веб-сайт по умолчанию, чтобы делать все, что вы пожелаете, например перенаправлять на другой URL. Когда пользователь вводит, скажем, «xyz.example» .com ", вы можете перенаправить на" example.com "и указать все неизвестные субдомены на корневой домен. Шаги:

  1. Установить установщик веб-платформы: http://www.microsoft.com/web/downloads/platform.aspx

    Запустите его, найдите «URL Rewrite» и установите его.

  2. Перейдите на веб-сайт по умолчанию и откройте «Перезапись URL».

  3. Нажмите «Добавить правило (и)» в правой части экрана.

  4. Назовите правило и установите следующее:

    Запрошенный URL: соответствует шаблону

    Использование: регулярные выражения

    Шаблон: (. *)

    Логическая группировка: сопоставить все

  5. Добавить новое условие (нажать кнопку «Добавить ..») и установить:

    Ввод условия: {CACHE_URL}

    Проверьте, соответствует ли входная строка: шаблону

    Шаблон (при необходимости измените): (http | https): // (. *?) \ .Rootdomain \ .tld

    Нажмите [OK].

  6. Теперь прокрутите вниз до действия и установите:

    Тип действия: Перенаправление

    URL перенаправления (при необходимости измените): {C: 1}: //rootdomain.tld {R: 0}

"{C: #}" и "{R: #}" появляются из тестовых окон, когда вы нажимаете кнопки "Тестовый шаблон" рядом с записями шаблонов регулярных выражений. Вы можете сопоставить часть серверного значения и использовать его позже.

Кроме того, вы можете воспользоваться этим советом при передаче HTTP / HTTPS в URL («{C: 1}» в шаге 6 выше): http://weblogs.asp.net/owscott/url-rewrite-protocol-http-https-in-the-action

0 голосов
/ 18 сентября 2018

Для пользователей, которые не могут выполнить обновление до IIS 10+, включить поддержку имен хостов с подстановочными знаками через обратный прокси-сервер не очень сложно.

Пример HTTP приведен ниже, в то время как другие настройки - всего лишь несколько шагов.

  1. Создайте универсальный сайт, который привязывается к *: 80 и не содержит имени хоста.
  2. Создайте первый сайт, который привязан к *: 8091 и не имеет имени хоста.
  3. Создайте второй сайт с привязкой к *: 8092 и без имени хоста.
  4. Проверьте оба сайта и двигайтесь дальше.
  5. Установить модуль ARR и URL Rewrite.
  6. Создание правил перезаписи на универсальном сайте для отправки запросов двум сайтам

    <system.webServer>
        <rewrite>
            <rules>
                <rule name="site1" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^(.*).site1.com$" />
                    </conditions>
                    <action type="Rewrite" url="http://localhost:8091/{R:0}" />
                </rule>
                <rule name="site2" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^(.*).site2.com$" />
                    </conditions>
                    <action type="Rewrite" url="http://localhost:8092/{R:0}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
    

Обратите внимание, что на уровне сервера режим ARR proxy должен быть включен,

    <system.webServer>
        <proxy enabled="true" />
    </system.webServer>

Имя хоста с подстановочными знаками IIS 10 проще и также имеет лучшую производительность, поскольку ARR имеет свои издержки (но, вообще говоря, незначительно).

0 голосов
/ 23 октября 2014

Обновление 2: ссылка не работает, обновите до IIS 10, теперь он поддерживает символы подстановки.

ОБНОВЛЕНИЕ: Это работает некоторое время, через некоторое время я стал засыпан многочисленными поступающими запросами. Я бы не рекомендовал этот метод.

Убедитесь, что ваши записи DNS настроены правильно (запись CNAME * -> @), и все будет работать без сбоев. Протестировано с несколькими доменами.

Ссылка не работает сейчас раньше http://pzxc.com/apache-style-wildcard-hostname-rewrite-rules-in-iis

...