Общие сведения о сайтах, приложениях и виртуальных каталогах в IIS 7

Рейган Темплин

Введение

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

В этой статье представлен краткий обзор приложений в IIS 6.0, чтобы лучше понять различия, представленные в IIS 7. Затем описываются основные понятия сайтов, приложений и виртуальных каталогов в IIS и вводится секция <sites> в конфигурации.

Сведения о сайтах, приложениях и виртуальных каталогах в IIS 6.0

В IIS 6.0 понятия виртуальных каталогов и приложений запутались. Хотя они обсуждались как отдельные понятия (и они были концептуально отличаются от точки зрения функциональности), приложение не было физически отдельным объектом из виртуального каталога. В IIS 6.0 приложение было просто виртуальным каталогом с одним или сочетанием следующих свойств в метабазе: AppFriendlyName, AppRoot, AppIsolated и AppPoolID.

Замечание

Корневой каталог сайта является исключением, так как он неявно рассматривается как приложение, даже если эти свойства не заданы.

Приложения были менее важными для IIS, чем в технологиях, которые расширяют функциональные возможности веб-сервера, такие как активные страницы сервера (ASP), интерфейс программирования приложений Интернета (ISAPI) и ASP.NET. Эти технологии предоставляют дополнительные функции и обработку приложений, размещенных в IIS 6.0, и позволяют разработчикам создавать более сложные приложения. Важным вопросом для IIS 6.0 было изоляция таких приложений таким образом, чтобы запретить приложениям в одном пуле приложений влиять на приложения в другом пуле приложений на сервере.

Сведения о сайтах, приложениях и виртуальных каталогах в IIS 7 и более поздних версиях

IIS 7 и более поздние версии формализуют концепции сайтов, приложений и виртуальных каталогов. Виртуальные каталоги и приложения теперь являются отдельными объектами, и они существуют в иерархической связи в схеме конфигурации IIS. Кратко говоря, сайт содержит одно или несколько приложений, приложение содержит один или несколько виртуальных каталогов, а виртуальный каталог сопоставляется с физическим каталогом на компьютере.

Как и в IIS 6.0, сайт содержит все содержимое, как статическое, так и динамическое, связанное с этим сайтом. Однако каждый сайт должен содержать по крайней мере одно приложение, которое называется корневым приложением. И каждое приложение (включая корневое приложение) должно содержать по крайней мере один виртуальный каталог, который называется корневым виртуальным каталогом. Эти объекты работают вместе для формирования сайта.

Кроме того, в IIS 7 и более поздних версиях концепция приложения теперь имеет смысл как для IIS, так и для технологий, расширяющих функциональные возможности IIS. Приложение — это объект, важный для сервера во время выполнения. Это связано с тем, что конвейеры обработки запросов IIS и ASP.NET были объединены в IIS 7 и выше, чтобы контент мог воспользоваться функциональностью, ранее предоставляемой только для приложений управляемого кода. Например, каждое управляемое кодом приложение выполняется в домене приложения (AppDomain). Приложение может иметь несколько виртуальных каталогов, и каждый из них будет обслуживаться тем же доменом приложения, что и приложение, к которому они относятся.

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

Sites

Сайт — это контейнер для приложений и виртуальных каталогов, к нему можно получить доступ с помощью одной или нескольких уникальных привязок.

Привязка включает два атрибута, важные для взаимодействия: протокол привязки и сведения о привязке. Протокол привязки определяет протокол, с помощью которого происходит взаимодействие между сервером и клиентом. Сведения о привязке определяют сведения, используемые для доступа к сайту. Например, протокол привязки веб-сайта может быть HTTP или HTTPS, а сведения о привязке — это сочетание IP-адреса, порта и необязательного заголовка узла.

Сайт может содержать несколько привязок, если для сайта требуются разные протоколы или сведения о привязке. В более ранних версиях IIS поддерживаются только протоколы HTTP и HTTPS. Например, веб-сайт может иметь как привязку HTTP, так и привязку HTTPS, когда разделы сайта требуют безопасного обмена данными по протоколу HTTPS.

В IIS 7 и более поздних версиях привязки могут применяться к любому протоколу. Служба активации процессов Windows (WAS) — это новая служба, которая позволяет службам IIS использовать дополнительные протоколы. Эта служба сохраняет знакомую модель процесса IIS 6.0, например пулы приложений и активацию процесса на основе сообщений, а также функции размещения, такие как быстрая защита от сбоев, мониторинг работоспособности и переработка. Тем не менее, WAS удаляет зависимость от HTTP из архитектуры активации. Это полезно для технологий, которые обеспечивают взаимодействие между приложениями в веб-службах по стандартным протоколам. Модель программирования Windows Communication Foundation (WCF) — это одна из таких технологий, которая может способствовать обмену данными по стандартным протоколам TCP, Microsoft Message Queuing (MSMQ) и именованным каналам. Это позволяет приложениям, используюющим протоколы связи, воспользоваться преимуществами функций IIS, таких как перезапуск процессов, быстрая защита от сбоя и конфигурация, которые ранее были доступны только для приложений на основе HTTP. Дополнительные сведения о модели программирования WCF см. в Windows Communication Foundation в MSDN.

Помимо приложений (которые содержат виртуальные каталоги) и указания привязок, к сайту относятся следующие параметры конфигурации:

  • Ограничения: настройте параметры, чтобы ограничить объем пропускной способности, количество подключений или время, разрешенное для подключений к сайту.
  • Ведение журнала: настройка параметров для обработки и хранения файлов журналов для сайта.
  • Журналы трассировки неудачных запросов: настройте параметры для трассировки неудачных запросов для сайта.

Приложения

Приложение — это группа файлов, которые предоставляют содержимое или предоставляют службы по протоколам, таким как HTTP. При создании приложения в IIS путь приложения становится частью URL-адреса сайта.

В IIS 7 и более поздних версиях каждый сайт должен иметь приложение, которое называется корневым приложением или приложением по умолчанию. Однако сайт может иметь несколько приложений. Например, у вас может быть веб-сайт онлайн-коммерции с несколькими приложениями, например приложение корзины для покупок, которое позволяет пользователям собирать элементы во время покупок и приложение для входа, которое позволяет пользователям отозвать сохраненные данные оплаты при совершении покупки.

Помимо принадлежности к сайту, приложение принадлежит пулу приложений, который изолирует приложение от приложений в других пулах приложений на сервере. В случае приложений управляемого кода обязательно свяжите приложение с пулом приложений, на котором выполняется версия .NET Framework, которую требует ваше приложение.

Как описано в разделе "Сайты" данной статьи, IIS поддерживает HTTP и HTTPS по умолчанию, но также можно использовать дополнительные протоколы. Для каждого сайта необходимо указать одну или несколько привязок для взаимодействия с содержимым сайта и доступа к ним. Для взаимодействия приложения с помощью протокола, указанного в привязке родительского сайта, необходимо включить протокол. Для этого укажите протокол в атрибуте enabledProtocols для приложения и убедитесь, что на сервере есть соответствующий адаптер прослушивателя и указан в <listenerAdapters> разделе конфигурации.

Виртуальные каталоги

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

В IIS 7 и более поздних версиях каждое приложение должно иметь виртуальный каталог, который называется корневым виртуальным каталогом и сопоставляет приложение с физическим каталогом, содержащим содержимое приложения. Однако приложение может иметь несколько виртуальных каталогов. Например, вы можете использовать виртуальный каталог, если требуется, чтобы приложение включало изображения из другого расположения в файловой системе, но не хотите перемещать файлы изображений в физический каталог, сопоставленный с корневым виртуальным каталогом приложения.

По умолчанию службы IIS используют конфигурацию из файлов Web.config в физическом каталоге, с которым сопоставлен виртуальный каталог, а также во всех дочерних каталогах этого физического каталога. Если вы не хотите использовать файлы Web.config в дочерних каталогах, укажите false для атрибута allowSubDirConfig в виртуальном каталоге.

При необходимости, если необходимо указать учетные данные и метод для доступа к виртуальному каталогу, можно указать значения атрибутов имени пользователя, пароля и входа в систему.

Конфигурация IIS: <sites> раздел

Ознакомьтесь с разделом по умолчанию <sites> в IIS 7 и более поздних версиях. Это то, что находится в файле ApplicationHost.config (расположено %windir%\system32\inetsrv\config\) после установки IIS в Windows Server® 2008.

<sites> 
    <site name="Default Web Site" id="1"> 
        <application path="/"> 
            <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" /> 
        </application> 
        <bindings> 
            <binding protocol="http" bindingInformation="*:80:" /> 
        </bindings> 
    </site> 
    <siteDefaults> 
        <logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" /> 
        <traceFailedRequestsLogging directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" /> 
    </siteDefaults> 
    <applicationDefaults applicationPool="DefaultAppPool" /> 
    <virtualDirectoryDefaults allowSubDirConfig="true" /> 
</sites>

При отображении одного "/" в поле пути известно, что это корневой объект. В зависимости от того, находится ли он в разделе приложения или виртуального каталога, это корневое приложение или корневой виртуальный каталог.

Элементы по умолчанию

В следующем разделе перечислены коллекции и элементы раздела <sites> , а также их иерархическая связь в <sites> разделе.

<sites> section 
<site> collection 
<bindings> collection 
<binding> element 
<clear> element 
<limits> element 
<logFile> element 
<traceFailedRequestsLogging> element 
<application> collection 
<virtualDirectory> collection 
<virtualDirectoryDefaults> element 
<applicationDefaults> element 
<virtualDirectoryDefaults> element 
<siteDefaults> element 
<bindings> collection 
<binding> element 
<clear> element 
<limits> element 
<logFile> element 
<traceFailedRequestsLogging> element 
<applicationDefaults> element 
<virtualDirectoryDefaults> element

Обратите внимание, что в нескольких местах отображаются два элемента: <applicationDefaults> элемент и <virtualDirectoryDefaults> элемент. Существует также элемент <siteDefaults>, хотя он появляется только один раз, так как может быть сконфигурирован только в одном месте в разделе <sites>. Элементы по умолчанию являются особыми, так как они позволяют настраивать значения по умолчанию для атрибутов, а не повторять одинаковые значения в каждой коллекции.

При настройке атрибута на нескольких уровнях используется значение на самом низком уровне. Например, если вы укажете значение по умолчанию в элементе как в <applicationDefaults> разделе, так и в <site> коллекции, будет использоваться значение из <site> коллекции. Кроме того, если один и тот же атрибут или дочерний элемент настроен как в элементе по умолчанию, так и в коллекции объекта, будет использоваться значение в коллекции. Например, если вы настроите атрибут в <applicationDefaults> элементе и коллекции <application> , будет использоваться значение из <application> коллекции.

В следующей таблице указывается, в каких родительских элементах <applicationDefaults> можно настроить элемент, и описывается влияние, которое имеют значения в приложениях.

Родительский элемент Описание
Раздел <sites> Задает параметры по умолчанию для всех приложений на сервере.
Коллекция <site> Задает параметры по умолчанию для всех приложений на родительском сайте.

В следующей таблице указывается, в каких родительских элементах <virtualDirectoryDefaults> можно настроить элемент, и описывается влияние, которое имеют значения в виртуальных каталогах.

Родительский элемент Описание
Раздел <sites> Задает параметры по умолчанию для всех виртуальных каталогов на сервере.
Коллекция <site> Задает параметры по умолчанию для всех виртуальных каталогов на родительском сайте.
Коллекция <application> Задает параметры по умолчанию для всех виртуальных каталогов в родительском приложении.

Сводка

Теперь вы должны лучше понять сайты, приложения и виртуальные каталоги в IIS 7 и более поздних версиях. В отличие от IIS 6.0, приложения и виртуальные каталоги стали отдельными объектами в конфигурации, что подчеркивает их уникальное назначение веб-серверу и их связь с сайтом. Кроме того, сайты теперь могут содержать приложения, использующие протоколы, отличные от ПРОТОКОЛА HTTP и HTTPS, что расширяет функциональные возможности сайта при сохранении преимуществ модели процесса, представленной в IIS 6.0.

Дополнительные сведения об архитектуре WAS и IIS см. в статье "Архитектура обработки запросов IIS" на IIS.NET. Дополнительные сведения о параметрах конфигурации, рассмотренных в этой статье, см. в разделе "Схема параметров IIS 7 " в MSDN.