Новые модули для Internet Information Server 7

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

Модуль перезаписи URL

Это, пожалуй, главная радость для разработчиков веб-приложений, использующих IIS. Какой современный пользователь Интернет предпочтет адрес вроде https://habrahabr.ru/content?type=blog\&section=microsoft значительно более удобочитаемому https://habrahabr.ru/blog/microsoft?

Отсутствие модуля, подобного mod_rewrite в Apache усложняло жизнь разработчикам, работащим с IIS, хотя создание решение для перезаписи путей в виде HttpModule и не составляет большого труда. Однако, новый модуль, находящийся в стадии версии для предварительного просмотра (CTP), тесно интегрируется с IIS и обладает большими возможностями:

  • Создание правил перезаписи путей с использованием регулярных выражений или масок символов (*, ?)
  • Перезапись путей либо на уровне сервера, либо на уровне отдельной директории/приложения
    Правила для директорий определяются в файле web.config,  для всего сервера - в applicationHost.config. Для редактирования правил используется графический интерфейс, встраиваемый в консоль управления IIS7.
  • Использование информации из серверных переменных и заголовков HTTP запроса при создании правил
    Таким образом, перезапись путей может осуществляться не только на основании URL, но и на основании контекста запроса, что позволяет гибко управлять приложением - например, переадресовывать пользователей в зависимости от значения REMOTE_ADDR - IP адреса.
  • Выполнение действий помимо перезаписи URL
    Например, вместо перезаписи URL может быть выполнена переадресация, запрос может быть отменен или возвращен произвольный код ответа.

Приятная новость для тех, кто размещает PHP приложения на IIS - команда разработчиков IIS вместе с модулем перезаписи путей поставляет утилиту для конвертирования правил mod_rewrite в формат правил, понятных модулю для IIS.

Подробнее о работе модуля можно узнать на официальном сайте IIS (EN):

Хороший пример использования модуля перезаписи в мирных целях можно посмотреть в статье о поддержке "красивых" адресов для WordPress на IIS7.

Скачать предварителную версию модуля перезаписи URL: x86, x64.

Модуль маршрутизации запросов

Еще один полезный модуль для высоконагруженных веб-приложений, который позволяет перенаправлять запросы к разным серверам в зависимости от текущей нагрузки, параметров запроса или значений переменных окружения. Модуль основан на описанном выше модуле перезаписи путей и вносит следующую дополнительную функциональность:

  • Балансировка нагрузки
    Вместе с модулем поставляются шесть алгоритмов для распределения нагрузки между серверами.
  • Маршрутизация запросов на основании значений переменных окружения или параметров запроса
  • Контроль работоспособности серверов
    Мониторинг осуществляется на основании рабочих запросов и заданных адресов.
  • Привязка пользователей к серверам на основании cookie
  • Диагностика проблем маршрутизации и накопление статистики по запросам
    Для работы со статистикой реализован графический интерфейс в консоли управления IIS7.

Подробнее о работе модуля можно прочитать статьи:

Скачать предварителную версию модуля маршрутизации запросов: x86, x64.