由 IIS 团队;Tobin Titus
Compatibility
版本
注释
IIS 7.0 及更高版本
本文中介绍的功能是在 IIS 7.0 中引入的。
IIS 6.0 及更早版本
在 IIS 7.0 之前,本文中所述的功能不受支持。
介绍
IIS 7.0 及更高版本具有早期版本的 IIS 中的新用户界面:IIS 管理器。 本文介绍界面风格、功能委派、配置交互方式以及远程处理。 请注意,某些版本的 IIS 可能没有本文档中讨论的某些功能/功能。
为什么它必须改变? 下面是一些首要原因:
IIS 和 ASP.NET 协同工作:IIS 6.0 用户右键单击网站,选择“所有属性”,并获取包含多个选项卡的对话框,用于不同的设置。 使用 IIS 7.0 及更高版本,IIS 管理器需要显示输出缓存、 失败请求跟踪和 请求筛选等新功能的配置,以及用于 .NET Framework ASP.NET 和相关部分的配置。 新功能需要更多新选项卡,这是一个不可接受的选项。
委派管理:将配置从元数据库移动到 .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 资源管理器的 地址栏 来进一步扩展这一功能。
图 1:新建 IIS 管理器
主页
开始使用 IIS 管理器后,主页将变得非常熟悉。 中间的功能列表可以按功能名称或说明进行排序,按区域或类别分组,并在不同的布局中查看。
图 2:IIS 管理器中的分组
功能范围
树视图中的服务器、站点、应用程序、虚拟目录和文件夹节点都显示包含功能列表的主页。 大多数功能都出现在所有这些节点的主页上,但也有例外。
这些功能仅在服务器主页上显示,因为它们是服务器范围的配置、数据或信息:
ISAPI 和 CGI 限制
证书(但根本不显示在远程连接中)
管理服务(但根本不出现在远程连接中)
工作进程
除了 服务器主页之外,这些功能无处不在地出现,因为它们是应用程序配置,它们在服务器级别上不合逻辑,或者因为这样工作更为理想(SSL):
会员用户
会员角色
个人资料
SSL
与委派关联的功能在它们出现的位置具有特殊规则:
功能委派:始终仅针对连接的根节点显示
管理员:仅针对服务器、站点和应用程序节点显示
特色页面布局
IIS 中有三种类型的页面
列表页
列表页包含列表。 大多数列表页允许按一列或多列中的值进行分组。 主列表页(如站点和应用程序池)允许你在列表列中搜索与搜索字符串匹配的条目来筛选列表条目。
图 3:IIS 管理器列表页
任务窗格中的 “添加/编辑/删除” 任务允许您操作和管理列表的内容。 不特定于列表项的功能设置(例如,指定应通过本地请求的详细错误覆盖自定义错误)通常通过“编辑功能设置...”任务进行配置。
图 4:IIS 管理器操作
属性面板
属性表格页显示一系列相关属性。 通过属性网格顶部的 “显示 选择器”,可以选择是要查看友好属性名称、配置属性名称还是同时查看两者。 下面的屏幕截图显示了这两个名称。
图 5:IIS 管理器中的属性网格
Dialog
对话框页包含复选框、文本框和单选按钮,通常是最熟悉的页面类型。 使用任务窗格中的“应用/取消”保存更改。
内容视图
内容视图是只读的显示;不能在此视图中创建、复制、移动或删除文件或文件夹。 可以通过单击 IIS 管理器中间窗格底部的功能视图/内容视图切换器中的“内容视图”或右键单击树视图节点并选择“切换到内容视图”来进入内容视图。
设置文件配置的唯一方法是切换到内容视图,选择该文件,然后在右键单击菜单或任务窗格中单击“切换到功能视图”。
图 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 节将显示在带有 overrideMode="allow" 的 location 标签中,并位于 applicationHost.config 中。
OverrideMode=“allow”表示在 web.config 文件中为 httpErrors 设置配置是有效的:
请参阅下面的“服务器、站点和应用程序连接”部分,了解配置锁定如何影响连接。 有关配置锁的详细信息,请参阅 如何使用配置锁定。
站点和应用程序管理员
此外,服务器管理员可以允许 非管理员使用 IIS 管理器 连接到站点或应用程序。 可以连接到网站或应用程序的非管理员称为“站点管理员”或“应用程序管理员”,他们可以:
管理其站点或应用程序的解锁配置(设置写入 web.config 文件)
查看锁定的配置设置 ,而无需修改它们
为其网站或应用程序添加其他网站或应用程序管理员
有关如何创建站点和应用程序管理员的信息,请参阅联机文档 “创建站点和委派的应用程序管理员”。
服务器、站点和应用程序连接
只有计算机管理员可以使用 IIS 管理器连接到 Web 服务器。
服务器连接 可以写入根配置文件、applicationHost.config 和根 web.config以及所有分布式 web.config 文件。 如果 applicationHost.config 中的配置节被锁定,那么在服务器连接中,相应的功能将会以读/写方式处理,因为配置更改是通过 location 标签写入到 applicationHost.config 中的。
计算机管理员和指定的网站管理员可以连接到网站。
站点连接只能写入站点根文件夹下 web.config 文件。 如果配置节锁定在 applicationHost.config中,相应的功能将在站点连接中显示为只读,因为站点连接无法将配置写入 applicationHost.config(即使在位置标记中)。 这会影响计算机管理员和站点管理员。
图 7:IIS 管理器中的配置层次结构
应用程序的父站点的计算机管理员、指定的应用程序管理员和站点管理员可以连接到应用程序。
应用程序连接只能写入应用程序根文件夹下 web.config 文件。 如果配置节锁定在 applicationHost.config 或站点的 web.config 文件中,相应的功能将在应用程序连接中显示为只读。
有关如何连接到服务器、站点或应用程序的信息,请参阅有关 在 IIS 7.0 中管理连接的在线文档。
配置
即使你从未更改配置锁定,也永远不会使用功能委派,但在某些情况下,你会想知道 IIS 管理器如何决定写入配置的位置。 有两个定义此行为的规则:
ApplicationHost.config 与根 Web.config:如果该功能列在 IIS 管理器中的 ASP.NET 区域下,服务器级别配置将写入 .NET Framework v2.0 的根 web.config 文件。 如果该功能列在 IIS 管理器中的 IIS 区域下,服务器级别配置将写入 applicationHost.config。此规则的唯一例外是窗体身份验证,该身份验证位于 IIS 区域的“身份验证”功能中。
锁定的配置与解锁的配置:默认情况下,所有 ASP.NET 配置部分和一些 IIS 配置部分都会解锁。 对于未锁定的部分,如果站点的配置发生更改,IIS 管理器将写入站点的 web.config;如果应用程序的配置发生更改,则将更改写入应用程序的配置。 默认情况下,大多数 IIS 配置节处于锁定状态。 对于锁定的分区,即使修改站点和应用程序的配置,IIS 管理器也会始终写入 applicationHost.config。
状态栏
状态栏显示 IIS 管理器将写入配置的位置:
配置:"
配置文件
“localhost”:服务器级配置,IIS 功能的 applicationHost.config,ASP.NET 功能的根 web.config。
“localhost/Default 网站”:默认网站物理文件夹中 web.config 文件
“localhost/Default Web Site/careers/technical”:在映射到默认网站下 URL“/careers/technical”的物理文件夹中的 web.config 文件
是
“applicationHost.config 或 root Web.config”:用于 IIS 功能的 applicationHost.config,用于 ASP.NET 功能的 root Web.config
“web.config”:Web 命名空间中的 web.config 文件
示例:写入 ApplicationHost.config 文件与根 Web.config 文件
压缩是一项 IIS 功能,如果按区域对主页功能列表进行分组/筛选,则会显示在 IIS 下。 如果导航到服务器级压缩页并禁用静态压缩,IIS 管理器会将此配置 %windir%\Windows\system32\inetsrv\applicationHost.config写入到:
.NET 编译是 .NET Framework 配置,如果按区域对主页功能列表进行分组/筛选,则会显示在 ASP.NET 下。 如果导航到服务器级 .NET 编译页并将默认语言设置为 C#,IIS 管理器会将 defaultLanguage 属性添加到根 web.config 文件中的编译部分,例如 %windir%\Windows\\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config:
这两种情况的状态栏将显示:配置:“localhost”applicationHost.config 或根 web.config
示例:写入锁定配置与解锁配置
默认情况下,IIS“defaultDocument”配置部分处于解锁状态。 如果为默认网站配置默认文档,IIS 管理器会将此配置写入到 %windir%\inetpub\wwwroot\web.config:
状态栏将显示:配置:“默认 Web 站点”web.config
默认情况下,IIS“httpErrors”配置部分处于解锁状态。 如果自定义默认网站的 HTTP 404 响应,IIS 管理器会将此配置写入到 %windir%\Windows\system32\inetsrv\applicationHost.config:
状态栏将显示:“localhost” applicationHost.config 或根 web.config,<位置路径=“Default Web Site”>
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 或基本身份验证,具体取决于用户在连接对话框中提供凭据时选择的内容。
图 9:指定凭据
代码下载请求
如果登录成功,WMSVC 将返回连接的 UI 模块列表。 例如,每个 IIS 管理器页(如“自定义错误页”)对应于一个模块。 如果 IIS 管理器没有模块,它将请求下载模块二进制文件(例如,如果服务器管理员在其生产服务器上安装了新的 RSA 安全产品,但未在用于连接到服务器的桌面计算机上安装该产品),则会发生此情况。
管理服务请求
建立连接后,最终用户与导致管理服务请求的 IIS 管理器交互。 管理服务请求模块服务在 WMSVC 中读取/写入服务器上的配置、运行时状态和提供程序。
Ping 请求
Ping 请求从 WMSVC 服务内部向它托管的 Web 服务器(HWC)发出。 Ping 请求是一种简单的机制,可确保可托管的 Web 核心继续保持响应。
服务配置
WMSVC 的可编辑配置集非常小,存储在注册表中。 每次启动服务时,都会在 %windir%\ServiceProfiles\LocalService\AppData\Local\Temp\WMSvc
图 10:更改注册表中的配置
安全性
IIS 管理器和 Web 管理服务(WMSVC)的远程管理已通过一系列评审,确保功能简单且安全。 以下是采取的一些安全措施:
需要SSL (HTTPS)才能确保远程 IIS 管理器客户端和 WMSVC 之间传递的数据的安全
以本地服务身份运行 ,权限集减少
锁定了可承载 Web 核心 (HWC) 配置,包括一组最少的必需模块和精心设计的请求筛选规则。