IIS 中 IIS 管理器入门

作者:IIS 团队的 Tobin Titus

兼容性

版本 说明
IIS 7.0 及更高版本 本文中所述的功能是在 IIS 7.0 中引入的。
IIS 6.0 及更低版本 在 IIS 7.0 之前,本文中所述的功能不受支持。

介绍

相较于早期版本的 IIS,IIS 7.0 及更高版本具有新的用户界面:IIS 管理器。 本文介绍外观、功能委派、与配置交互以及远程处理。 请注意,某些版本的 IIS 可能没有本文档中讨论的某些功能/特征。

为什么它必须改变? 下面是一些首要原因:

  • IIS 和 ASP.NET 协同工作:IIS 6.0 用户右键单击网站,选择“所有属性”,并获取包含多个选项卡的对话框,用于不同的设置。 使用 IIS 7.0 及更高版本,IIS 管理器需要显示输出缓存、失败请求跟踪请求筛选等新功能的配置,以及用于 ASP.NET 和 .NET Framework 相关部分的配置。 新功能需要更多新选项卡,这是一个不可接受的选项。
  • 委派管理:将配置从元数据库移动到 .NET 配置系统,意味着用户可以在 web.config 文件中设置 IIS 配置(如果允许)。 例如,可将应用程序 http://www.contoso.com/sales 的配置写入根配置文件 applicationHost.config、网站 http://www.contoso.com/ web.config 文件,或直接写入应用程序的 web.config 文件。 新的 IIS 管理器必须:1)允许管理员控制 web.config 文件中允许的配置,2) 显示正在写入配置的管理员/用户。 较旧的 IIS 管理器不能应对这些挑战。
  • 工程原因:软件具有使用寿命。 时间会带来新的技术、新的要求、新的约定,到了某一阶段,更新现有软件比重新开发软件更耗费人力和财力。 IIS 管理器的使用寿命即将结束。

还有什么要知道的? 在我们决定重写 IIS 管理器后,我们利用多种关键方式改进:

  • 扩展性:扩展 IIS 6.0 版本的 IIS 管理器非常困难。 新的 IIS 管理器可以更轻松地添加功能页、树视图节点和菜单项,而且全部使用托管代码和 WinForms。 连接到服务器的远程 IIS 管理器客户端会自动检测和下载新的 IIS 管理器扩展。
  • 远程管理:远程管理全部通过 HTTPS 完成,这使得它对防火墙友好且更易于管理。 Web 管理服务 (WMSVC) 是可选的可安装组件,用于启用远程管理。
  • 新的外观和风格:IIS 管理器需要一个更具缩放性的模型来显示设置,生成的功能列表视图类似于控制面板。 可以通过不同的方式对列表视图进行排序、分组和查看,从而更轻松地查找要找的内容。 IIS 管理器的导航功能也更像浏览器,地址栏与 Windows 资源管理器类似。

注意

本文档是为 Windows Server 2008 编写的。 Windows Vista® 可能没有本文档中讨论的一些功能/特征。

新的外观和风格

Internet Information Services (IIS) 管理器在过去版本中具有“后退/前进”类型导航,而新版 IIS 管理器在此基础上更进一步,增加了一个与 Windows 资源管理器类似的地址栏

Screenshot of the I I S Manager screen showing the default web site home page.

图 1:新的 IIS 管理器

主页

开始使用 IIS 管理器后,你就会对主页非常熟悉。 中间的功能列表可以按功能名称或说明进行排序,按区域或类别分组,并在不同的布局中查看。

Screenshot of the Default web site home pane showing grouping, views, and feature list.

图 2:IIS 管理器中的分组

功能范围

树状视图中的服务器、站点、应用程序、虚拟目录和文件夹节点都会显示带有功能列表的主页。 大多数功能都出现在所有这些节点的主页上,但也有例外。

这些功能服务器主页上显示,因为它们是服务器范围的配置、数据或信息:

  • ISAPI 和 CGI 限制
  • 证书(但根本不出现在远程连接中)
  • 管理服务(但根本不出现在远程连接中)
  • 工作进程

除了服务器主页之外,这些功能随处显示,因为它们是应用程序配置,它们在服务器级别不是逻辑性的,或者因为它们只是以这种方式 (SSL) 能更好地工作:

  • 成员身份用户
  • 成员身份角色
  • 配置文件
  • SSL

与委派关联的功能具有其显示位置的“特殊规则”:

  • 功能委派:始终仅针对连接的根节点显示
  • 管理员:仅针对服务器、站点和应用程序节点显示

功能页面布局

IIS 中有三种类型的页面

列表页

列表页包含列表。 大多数列表页允许按一列或多列中的值进行分组。 主列表页(如站点和应用程序池)允许在列表列中搜索与搜索字符串匹配的条目来筛选列表条目。

Screenshot of a portion of the I I S Manager screen showing the Go menu and Actions pane.

图 3:IIS 管理器列表页

通过任务窗格中的“添加/编辑/移除”任务,可以操作列表的内容。 非特定于列表条目的功能设置(例如,指定自定义错误应被本地请求的详细错误覆盖)一般通过“编辑功能设置...”任务进行配置。

Screenshot of the feature settings page showing the alert pane.

图 4:IIS 管理器操作

属性网格

属性网格页显示相关属性的网格。 通过属性网格顶部的“显示”选择器,可以选择是要查看友好属性名称、配置属性名称还是同时查看两者。 下面的屏幕截图显示了这两个名称。

Screenshot of the property grid page showing friendly and configuration names.

图 5:IIS 管理器中的属性网格

对话

对话框页包含复选框、文本框和单选按钮,通常是最熟悉的页面类型。 使用任务窗格中的“应用/取消”保存更改。

内容视图

内容视图是只读的显示;不能在此视图中创建、复制、移动或删除文件或文件夹。 若要进入内容视图,可以单击 IIS 管理器中间窗格底部的“功能视图/内容视图”切换器中的“内容视图”或右键单击树视图节点并选择“切换到内容视图”。

设置文件配置的唯一方法是切换到内容视图,选择该文件,然后在右键单击菜单或任务窗格中单击“切换到功能视图”。

Screenshot showing the Features View and Content View options.

图 6:切换到功能视图

功能委派

如果你是服务器管理员,并且不是在服务器上提供内容的主要人员,或者你是开发人员,并且希望更好地控制应用程序的 IIS 配置,则可能对功能委派感兴趣。

IIS 功能委派意味着管理:

  • 配置节锁定以控制可在 web.config 中设置的配置(通常,一个 IIS 配置部分是一个 IIS 模块)
  • 允许使用 IIS 管理器查看配置并为具有未锁定配置节的功能设置配置的网站和应用程序用户集

下面是 IIS 管理器中功能委派的粗略说明。 有关深入演练,请参阅“如何管理功能委派”。

配置锁定

如果配置节默认为“锁定”状态,则只能在 applicationHost.config 中配置它。IIS 管理器为服务器管理员提供了“解锁”IIS 配置节的方法。 解锁配置的节后,非管理员可在 web.config 文件中设置它。

例如,IIS 管理器中的“自定义错误页”功能与“system.webServer/httpErrors”节中的配置交互。 如果服务器管理员使用 IIS 管理器或 appcmd 解锁 system.web/httpErrors 配置节,httpErrors 节将显示在 applicationHost.config 中具有 overrideMode="allow" 的位置标记内:

<location path="" overrideMode="Allow">
    <system.webServer>
        <httpErrors/>
    </system.webServer>
</location>

OverrideMode="allow" 表示在 web.config 文件中为 httpErrors 设置配置是有效的:

<configuration>
   <system.webServer>
      <httpErrors>
         <remove statusCode="404" subStatusCode="-1" />
         <error statusCode="404" path="/errors/404.aspx" responseMode="Redirect" />
      </httpErrors>
   </system.webServer>
</configuration>

请参阅下面的“服务器、站点和应用程序连接”部分,了解配置锁定如何影响连接。 有关配置锁的详细信息,请参阅“如何使用配置锁定”。

站点和应用程序管理员

此外,服务器管理员可以允许非管理员使用 IIS 管理器连接到站点或应用程序。 可以连接到网站或应用程序的非管理员称为“站点管理员”或“应用程序管理员”,他们可以:

  • 管理其站点或应用程序的解锁配置(设置会写入 web.config 文件)
  • 查看锁定的配置设置,但无法进行修改
  • 为其网站或应用程序添加其他网站或应用程序管理员

有关如何创建站点和应用程序管理员的信息,请参阅联机文档“创建站点和委派的应用程序管理员”。

服务器、站点和应用程序连接

只有计算机管理员可以使用 IIS 管理器连接到 Web 服务器。 服务器连接可以写入根配置文件、applicationHost.config 和 root web.config 以及所有的分布式 Web.config 文件。 如果在 applicationHost.config 中锁定了配置节,则相应的功能将在服务器连接中读取/写入,因为配置更改会写入位置标记中的 applicationHost.config。

计算机管理员和指定的网站管理员可以连接到网站。 站点连接只能写入站点根文件夹下的 web.config 文件。 如果在 applicationHost.config 中锁定了配置节,则相应的功能将在站点连接中显示为只读,因为站点连接无法将配置写入 applicationHost.config(即使在位置标记中)。 这会影响计算机管理员和站点管理员。

图 7:IIS 管理器中的配置层次结构

应用程序的父站点的计算机管理员、指定的应用程序管理员和站点管理员可以连接到应用程序。 应用程序连接只能写入应用程序根文件夹下的 web.config 文件。 如果在 applicationHost.config 或站点的 web.config 文件中锁定了配置节,则相应的功能将在应用程序连接中显示为只读。

有关如何连接到服务器、站点或应用程序的信息,请参阅有关“在 IIS 7.0 中管理连接”的在线文档。

配置

即使你从未更改配置锁定,且从不使用功能委派,但在某些情况下,你会想知道 IIS 管理器如何决定写入配置的位置。 有两个定义此行为的规则:

  • ApplicationHost.config 与 root Web.config:如果该功能列在 IIS 管理器中的 ASP.NET 区域下,服务器级别配置将写入 .NET Framework v2.0 的 root Web.config 文件。 如果在 IIS 管理器的 IIS 区域下列出了该功能,服务器级别配置将写入 applicationHost.config。此规则的唯一例外是窗体身份验证,该身份验证位于 IIS 区域的“身份验证”功能中。
  • 锁定与已解锁配置:默认情况下,所有 ASP.NET 配置部分和一些 IIS 配置部分都会解锁。 对于解锁的部分,如果站点的配置已更改,IIS 管理器将写入站点的 web.config;如果应用程序的配置已更改,则应用程序配置将写入站点的 Web.config。 默认情况下,大多数 IIS 配置节处于锁定状态。 对于锁定的分区,即使修改站点和应用程序的配置,IIS 管理器也会始终写入 applicationHost.config。

状态栏

状态栏显示 IIS 管理器会将配置写入什么位置:

配置:'<config_file_object_path>' <config_file_name>, <location path="<path>">

<config\_file\_object\_path> 是配置文件对象的路径,例如:

  • “localhost”:服务器级配置;用于 IIS 功能的 applicationHost.config、用于 ASP.NET 功能的根 web.config。
  • “localhost/Default Web Site”:默认网站物理文件夹中的 web.config 文件
  • “localhost/Default Web Site/careers/technical”:映射到默认网站下 URL“/careers/technical”的物理文件夹中的 web.config 文件

<config\_file\_name> 是目标配置文件的名称,例如:

  • “applicationHost.config 或 root Web.config”:用于 IIS 功能的 applicationHost.config、用于 ASP.NET 功能的 root web.config
  • “web.config”:Web 命名空间中的 web.config 文件

<location\_path> 是所配置对象的位置路径(有关位置路径的详细信息,请参阅“配置概述”)。 仅当功能配置节锁定在较高级别时,才会显示此部分文本。

Screenshot showing the Switch to Features View selected and the Actions pane.

示例:写入 ApplicationHost.config 与 root Web.config

压缩是一项 IIS 功能,如果按区域对主页功能列表进行分组/筛选,则会显示在 IIS 下。 如果导航到服务器级压缩页并禁用静态压缩,IIS 管理器会将此配置写入到 %windir%\Windows\system32\inetsrv\applicationHost.config

<urlCompression doStaticCompression="false" />

.NET 编译是 .NET Framework 配置,如果按区域对主页功能列表进行分组/筛选,则会显示在 ASP.NET 下。 如果导航到服务器级 .NET 编译页并将默认语言设置为 C#,IIS 管理器会将 defaultLanguage 属性添加到 root web.config 文件中的编译部分,即 %windir%\Windows\\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config

<compilation defaultLanguage="C#">

这两种情况的状态栏将读取:配置:“localhost”applicationHost.config 或 root web.config

示例:写入锁定与已解锁配置

默认情况下,IIS“defaultDocument”配置节处于解锁状态。 如果为默认网站配置默认文档,IIS 管理器会将此配置写入到 %windir%\inetpub\wwwroot\web.config

<configuration>
   <system.webServer>
      <defaultDocument>
         <files>
            <clear />
            <add value="default.aspx" />
      </defaultDocument>
   </system.webServer>
</configuration>

状态栏将读取:配置:“默认网站”web.config

默认情况下,IIS“httpErrors”配置节处于解锁状态。 如果自定义默认网站的 HTTP 404 响应,IIS 管理器会将此配置写入到 %windir%\Windows\system32\inetsrv\applicationHost.config

<location path="Default Web Site" overrideMode="Allow">
  <system.webServer>
     <httpErrors>
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" path="/err/404.aspx" responseMode="Redirect" />
     </httpErrors>
  </system.webServer>
</location>

状态栏将读取:“localhost”applicationHost.config 或 root web.config,<位置路径=“默认网站”>

IIS 6.0 和早期版本的 IIS 管理器远程处理是通过 MMC 启用的,并且始终处于启用状态。 使用 IIS 7.0 及更高版本时,必须显式启用 IIS 管理器远程处理。 所有远程管理都是通过 HTTPS 完成的,由名为 Web 管理服务 (WMSVC) 的 IIS 组件处理。 如果要通过 IIS 管理器启用 IIS 7.0 及更高版本的远程管理,请阅读“如何启用 IIS 管理器远程处理”。

Web 管理服务 (WMSVC)

Web 管理服务 (WMSVC) 是在 NT 服务中托管的独立 Web 服务器(可托管 Web 核心 (HWC))。 安装并启动 WMSVC 后,它会在所有未分配的 IP 地址上侦听端口 8172。 它只接收 4 种类型的请求,每个请求都由其自己的处理程序提供服务:

  • 登录请求 login.axd
  • 用于 download.axd 的代码下载请求
  • 管理对 service.axd 的服务请求
  • Ping 请求 ping.axd

登录请求

IIS 管理器通过网络向 WMSVC 发送登录请求来建立连接。 身份验证是 NTLM 或基本身份验证,具体取决于用户在连接对话框中提供凭据时选择的内容。

Screenshot of the login dialog showing the N T L M and Basic sections.

图 9:指定凭据

代码下载请求

如果登录成功,WMSVC 将返回连接的 UI 模块列表。 例如,每个 IIS 管理器页(如“自定义错误页”)对应于一个模块。 如果 IIS 管理器没有模块,它将请求下载模块二进制文件(例如,如果服务器管理员在其生产服务器上安装了新的 RSA 安全产品,但未在用于连接到服务器的桌面计算机上安装该产品),则会发生此情况。

管理服务请求

建立连接后,最终用户与导致管理服务请求的 IIS 管理器交互。 管理服务请求 WMSVC 中的模块服务在服务器上读取/写入配置、运行时状态和提供程序。

Ping 请求

Ping 请求从 WMSVC 服务内部向它托管的 Web 服务器 (HWC) 发出。 Ping 请求是一种简单的机制,可确保可托管网络核心持续响应。

服务配置
WMSVC 的可编辑配置集非常小,存储在注册表中。 每次启动服务时,都会在 %windir%\ServiceProfiles\LocalService\AppData\Local\Temp\WMSvc<GUID>\ 中重新生成 Web 配置文件。 即使管理员也无法编辑 Web 配置文件。

Screenshot showing web configuration files.

图 10:更改注册表中的配置

安全性

IIS 管理器和 Web 管理服务 (WMSVC) 远程控制经过了一系列审查,以确保功能简单、安全。 以下是采取的一些安全措施:

  • 需要SSL (HTTPS) 才能确保远程 IIS 管理器客户端和 WMSVC 之间传递的数据的安全
  • 以本地服务身份运行,权限集减少

锁定了可托管 Web 核心 (HWC) 配置,包括一组最少的必需模块和精心设计的请求筛选规则。