Основные сведения о сайтах, приложениях и виртуальных каталогах в 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, чем для технологий, расширяющих функциональные возможности веб-сервера, таких как Active Server Pages (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). Приложение может иметь несколько виртуальных каталогов, и каждый из них будет обслуживаться тем же доменом приложения, к которому они относятся.

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

Сайты

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

Привязка включает два важных атрибута: протокол привязки и сведения о привязке. Протокол привязки определяет протокол, по которому осуществляется обмен данными между сервером и клиентом. Сведения о привязке определяют сведения, используемые для доступа к сайту. Например, протокол привязки веб-сайта может быть 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 в виртуальном каталоге.

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

Конфигурация 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> как в разделе, так <sites> и в <site> коллекции, будет использоваться значение из <site> коллекции. Кроме того, если один и тот же атрибут или дочерний элемент настроен как в элементе по умолчанию, так и в коллекции объекта, будет использоваться значение в коллекции. Например, при настройке атрибута в элементе <applicationDefaults> и в <application> коллекции будет использоваться значение из <application> коллекции.

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

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

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

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

Сводка

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

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