Запустить два веб-сайта на одном порту на IIS 7.5 - PullRequest
13 голосов
/ 17 августа 2011

Нам нужно иметь возможность запускать две версии одного веб-приложения ASP.net на одном и том же сервере интрасети и номере порта, но одну - с /, а другую - с / экспериментальной (не настоящие имена, но достаточно близко).,

C: \ inetpub \ wwwroot \ Version1 => http://test1.organization.com/ C: \ inetpub \ wwwroot \ Version2 => http://test1.organization.com/experimental

Первый URL-адрес уже был открыт для некоторыхбета-пользователи и, следовательно, должны быть несколько стабильными.Второй будет содержать экспериментальный код, который увидят только пользователи, идущие в / Экспериментальный.У нас нет возможности использовать другой сервер или другой порт.

В прошлом я достиг этого, создав / сопоставив сайт в разделе Сайты в IIS, а затем добавив второй сайт какприложение под ним, и псевдоним его / site2.

Сайты сервера. Веб-сайт по умолчанию <= физический путь, сопоставленный с первой версией, и / / Приложение1 <= вложенное приложение, сопоставленное со второй версией и / экспериментальный </p>

Однако это выглядит небрежно.Было бы чище сделать это с правилом перезаписи или с ARR?Если да, то как?

Спасибо!

Ответы [ 2 ]

13 голосов
/ 17 августа 2011

Комбинация ARR и правил перезаписи решит эту проблему. Вот следующие шаги:

  1. Скачать и установить ARR http://www.iis.net/download/ApplicationRequestRouting
  2. В диспетчере IIS выберите свой компьютер на панели «Подключения», дважды щелкните функцию «Маршрутизация запросов приложений» в разделе «IIS», щелкните ссылку «Прокси-сервер» на панели «Действия», затем установите флажок «Включить прокси-сервер» и выбирает действие Применить.
  3. Измените привязки двух ваших существующих веб-сайтов, например, привязайте веб-сайт Released к порту 81, а веб-сайт Experimental к порту 82.
  4. Создайте новый веб-сайт и пул приложений и привяжите его к http:*:80:. Назовите его «Веб-сайт по умолчанию». Укажите его физический путь к «% SystemDrive% \ inetpub \ DefaultWebSite»
  5. Создайте файл web.config для веб-сайта «По умолчанию» и напишите там свои правила маршрутизации:

    <rules>
        <rule name="Reverse Proxy for Experimental" stopProcessing="true">
            <match url="^.*/experimental/.*" />
            <action type="Rewrite" url="http://{HTTP_HOST}:82/{R:0}" />
        </rule>
        <rule name="Reverse Proxy for Release" stopProcessing="true">
            <match url=".*" />
            <action type="Rewrite" url="http://{HTTP_HOST}:81/{R:0}" />
        </rule>
    </rules>
    
  6. Возможно, вам придется немного поиграться с вашими правилами перезаписи, вы можете поэкспериментировать с апплетом модуля перезаписи URL на IIS и узнать больше об этом здесь: http://learn.iis.net/page.aspx/500/testing-rewrite-rule-patterns/ Для получения дополнительной помощи обязательно просмотрите Руслан Блог Якушева: http://ruslany.net/

Это даст вам три совершенно разных веб-сайта, доступных через один фасад через порт 80 (хотя, конечно, вы можете попасть на каждый веб-сайт напрямую через порты 81 и 82, если вам нужно: http://localhost:81/default.aspx, например).

3 голосов
/ 17 августа 2011

Можете ли вы запустить один из сайтов в другом поддомене, например, test1.organization.com и beta1.organization.com? Если это так, то вы можете настроить их оба в качестве веб-сайтов верхнего уровня в IIS и задать имя хоста для каждой привязки сайта, чтобы они могли работать на одном IP-адресе и порте.

...