什么是 IIS(Internet 信息服务)或 Windows Web

IIS 是 Internet Information Services 的缩写,以前称为 Internet Information Server,是 Microsoft 的一种 Web 服务器,旨在与 Windows 产品一起使用,从 NT 系列开始。

此 Web 服务器用于帮助 Windows 用户在 Web 上托管各种内容类型,例如媒体文件、文档,甚至是成熟的网站。 目前,Apache 是最流行的 Windows Web 服务器,紧随其后的是 IIS,令人印象深刻。

什么是 IIS?

IIS 是一个易于熟悉的 Web 服务器,这要归功于其直观的图形用户界面 (GUI),它允许您管理与该服务及其相关用户关联的网站。 IIS 的 GUI 使您可以从一个位置轻松设计、自定义、配置和发布网站。

它有一个称为 IIS 管理器的内置网站管理工具,您可以使用它来调整选项,例如安全设置、性能参数、日志记录首选项,以及您管理的网站的错误页面或默认值。

从技术的角度来看,IIS 非常通用,因为它可以为标准和动态网页提供服务,而无需付出很大的努力。 因此,您可以使用它来创建和发布 HTML 网页,但很高兴知道您还可以管理 PHP 页面和 ASP.NET 应用程序。

由于其灵活性,IIS 可以运行包含在动态网页中的脚本和应用程序,并将结果显示到访问者的 Web 浏览器屏幕。 对于静态网站,这个过程更加简单:IIS 只是将 HTML 内容和图像(如果有的话)发送到访问者的 Web 浏览器。

IIS 的目的是什么?

鉴于它受益于 Microsoft 的全面支持,并且它包含许多高级功能,IIS 是创建和管理商业网站(如电子商店或促销组合网站)的绝佳选择。

不利的一面是,将 IIS 用于商业目的也意味着您需要商业许可证。 此外,此许可证类型的价格取决于您要包含的用户数量。

因此,我们已经确定 IIS 可用于创建和托管网站,以及它支持静态和动态 Web 内容的事实。 然而,IIS 远不止于此。 例如,您可以使用其内置模块支持来增强服务器的功能。

可以在您的服务器上安装流媒体模块,以便您网站的访问者可以从流媒体内容中受益。 您还可以使用 URL 重写模块,该模块使您能够创建强大的 URL 实施规则,以便访问者可以轻松记住它们,并且搜索引擎可以更快地找到它们。

因此,不用说,如果您需要一种快速创建和发布网站的方法,IIS 是最好的方法之一。 最好的方法仍然是 Apache HTTP,这要归功于它是开源的,并且无论用户数量如何,您都可以免费使用它。

IIS 版本历史

值得一提的是,最初,IIS 旨在替代作为研究项目开发的 Web 服务器。 第一个 Microsoft 签名的网络服务器项目作为免费软件分发,专为 EMWAC(欧洲 Microsoft Windows NT 学术中心)设计。

然而,鉴于 EMWAC 服务器无法处理所有流向 microsoft.com 网站的流量,该项目被放弃,微软以 IIS 的形式开发了自己的 Web 服务器。

一个值得注意的方面是大多数版本的 IIS 是与 Windows 操作系统版本一起发布的。 果然,当时的 IIS 只是我们今天所知道的一个影子。 事实上,每个 Windows 版本都可以很好地作为 IIS 发展的检查点。

IIS 1.0
IIS 的第一个版本
作为 Windows NT 3.51 的免费插件发布

IIS 2.0
免费包含在 Windows NT 4.0 中

IIS 3.0
包含在 Windows NT 4.0 Service Pack 2 中
添加了 Active Server Pages 动态脚本环境

IIS 4.0
作为 Windows NT 4.0 选项包的一个组件发布
添加了基于 MMC 的管理应用程序

IIS 5.0
包含在 Windows 2000 中
添加:
新的身份验证方法
WebDAV 协议支持
ASP 增强功能
HTTP.SYS

删除:

IIS 5.1
包含在 Windows XP Professional 中
与 IIS 5.0 没有太大区别

IIS 6.0
包含在 Windows Server 2003 和 x64 版本的 Windows XP Professional 中
添加:
IPv6 支持
新的工作流程支持以提高可靠性和安全性
引入 HTTP.SYS 作为 HTTP 特定的 HTTP 请求端口监听器

  如何在 Windows 10 的“开始”菜单中搜索 PC 的所有文件

IIS 7.0
随 Windows Server 2008 和 Windows Vista 一起提供
添加:
新的模块化设计可提高性能并减少攻击面
层次结构配置系统,帮助更轻松地部署网站
基于 Windows 窗体的管理应用程序
新的命令行管理选项
更好的 .NET 框架支持

改变:
无限数量的允许连接
并发请求限制为 10 或 3 个,具体取决于操作系统
允许额外的请求并将它们排队,而不是丢弃它们

IIS 7.5
包含在 Windows Server 2008 R2 和 Windows 7 中(需要从程序和功能手动激活)
添加:
TLS 1.1 和 TLS 1.2 支持
最佳实践分析工具
应用程序池的进程隔离

改进:
FTP 和 WebDAV 模块
PowerShell 中的命令行管理

IIS 8.0
仅在 Windows Server 2012 和 Windows 8 中可用
添加:
SNI(SSL 主机名绑定)
集中式 SSL 证书支持
应用程序初始化
多核 NUMA 硬件扩展

IIS 8.5
包含在 Windows Server 2012 R2 和 Windows 8.1 中
添加:
空闲工作进程页面输出
增强的日志记录
动态站点激活
自动重新绑定证书
ETW 日志记录

IIS 10.0
版本 1607
包含在 Windows Server 2016 和 Windows 10 周年更新中
添加:
HTTP/2 支持
在 Windows 容器中的 Nano Server 上运行 IIS
新的 Rest 管理 API 和基于 Web 的管理 GUI
通配符主机头

版本 1709
包含在 Windows Server 版本 1709 和 Windows 10 Fall Creators Update 中
添加:
HSTS 支持
容器增强
4 个新的服务器变量
站点绑定 PowerShell cmdlet

版本 1809
包含在 Windows Server 2019 和 Windows 10 十月更新中
添加:
每个站点的 HTTP/2 和 OCSP 装订控制标志
压缩 API
GZIP 和 brotli 支持模块
HSTS 配置模块

如果您打算使用 IIS,请尝试使用最新的稳定版本,因为它通常具有最严格的安全性并产生最佳的性能导向结果,尤其是在您运行最新版本的 Windows 或 Windows Server 时。

如何安装 IIS?

正如我们之前所说,您不需要安装 IIS,因为它实际上应该与您的 Windows 版本捆绑在一起。 如果您使用的是 Windows 10,您的 PC 上应该已经有 IIS 10.0 的某个版本。

但是,Microsoft 决定默认不激活 IIS,因此您需要手动启用它。 但别担心,完成这件事并不完全是火箭科学。 只需按照以下步骤在您的 PC 上激活 IIS:

打开你的控制面板
转到程序和功能
单击打开或关闭 Windows 功能按钮
选中 Internet 信息服务框
单击确定按钮

现在您可能想要重新启动您的 PC,以便您的系统可以加载所有必需的配置文件并让您充分使用 IIS。 它也可以在不重新启动 PC 的情况下工作,但在启用新功能后重新启动系统绝不是一个坏主意。

您还可以使用 PowerShell 在您的计算机上启用 IIS。 如果您从未听说过,PowerShell 是一个复杂的工具,很多人会误认为是 CMD。 PowerShell 远比这复杂得多,但我们不会详细介绍。 事不宜迟,以下是使用 PowerShell 在 Windows PC 上启用 IIS 的方法:

启动 PowerShell
在 PowerShell 中复制并粘贴以下命令:
Enable-WindowsOptionalFeature –online –featurename IIS-WebServerRole

等待过程结束

如您所见,PowerShell 提示在您的 Windows 10 PC 上启用 IIS 后无需重新启动。 如果要恢复该过程,可以使用以下命令通过 PowerShell 禁用 IIS:

Disable-WindowsOptionalFeature –online –featurename IIS-WebServerRole

但是,请注意,要禁用此功能,即使 PowerShell 也建议您重新启动 PC。 也可以稍后重新启动它,只是在此期间不要启动任何新项目。

  无论如何,Windows 公文包是做什么用的?

IIS 服务器是如何工作的?

首先,值得注意的是 IIS 有自己的进程引擎,可以处理所有客户端-服务器请求。 因此,每当客户端向您的 Web 服务器发送请求时,IIS 都会处理该请求,生成回复并将其发送给客户端。

从架构的角度来看,这个过程在两个不同的层上展开:

内核模式——代码可以执行任何命令,因为它可以完全访问连接的硬件,这正是为什么这种模式专门用于受信任的进程以及为什么在这种模式下崩溃会导致整个系统崩溃的原因。 最后但同样重要的是,HTTP.SYS 可以在内核模式中找到。
用户模式——在此模式下执行的命令不直接与硬件或参考内存交互,而是使用 API 为它们执行此操作。 此模式提供了一个额外的层来防止服务器处理不当,并且可以在必要时轻松撤消错误。

正如我们上面提到的,您可以在内核模式中找到 HTTP.SYS。 HTTP.SYS 用于将客户端请求转发到应用程序池。 每当客户端与网站的 URL 交互并尝试访问该页面时,就会启动此请求转发过程。 每当发生这种情况时,HTTP.SYS 都会检索客户端的请求并将它们排入特定应用程序池的队列。

转发请求后,w3wp.exe(工作进程)加载 ISAPI 过滤器并单独加载 HttpRuntime.ProcessRequest,如果它是 ASPX 页面,则与 aspnet_isapi.dll 一起加载。 HttpRuntime.ProcessRequest 的启动标志着处理的开始,之后 HttpRuntime 进程使用 HttpApplication 对象构建一个池,其内容将通过 HTTP 传递。

然后激活 HTTP 模块,并继续此过程,直到请求到达 ASP.NET 页面的 HTTP 处理程序。 请求通过 HTTP 路由后,页面开始显示。

什么是工作进程?

首先,值得注意的是,工作进程不止一个。 事实上,有几个这样的实体可以确保您的网络服务器和您在其上托管的内容的良好运行,无论是我们正在谈论的网站还是应用程序。

因此,IIS 的工作进程负责为我们提供您之前在 IIS 中配置的所有应用程序和网站的执行环境。 这些流程包含对上述服务的良好运行至关重要的几条信息。

您可以使用 API 来检索有关内存占用或 CPU 利用率的信息。 这些详细信息可以帮助您密切关注 Web 服务器及其相关工作进程的整体健康状况。

最后但同样重要的是,您可以使用 API 来终止工作进程,只需向工作进程端点发送 DELETE 请求即可。

什么是应用程序池?

尽管名称有点不言自明,但 IIS 的应用程序池的用途要复杂得多。 首先,应用程序池包含工作进程,因此可以肯定地说它扮演着容器的角色。 此外,它将应用程序彼此隔离,无论它们是在同一台服务器上还是在不同的服务器上运行,这与池通常的工作方式相反。

知道一个应用程序池可以容纳多个网站是非常重要的。 因此,换句话说,您可以说应用程序池只是一组已由工作进程处理的 URL。 这些池中的应用程序分离是合理的,因为它可以显着简化管理。 更重要的是,正是由于这种隔离,在一个应用程序池发生故障的情况下,其他应用程序池可以照常运行。

如何配置 IIS 服务器?

您已经在您的计算机上启用了 IIS,并且您已经了解了它的一些组件,现在让我们看看如何正确配置它,这样您就可以运行您自己的 Web 服务器而无需付出很大的努力。

按键盘上的 Win 键
键入 PC 并右键单击此 PC 图标
从上下文菜单中选择管理选项
展开服务和应用程序选项
选择 Internet 信息服务框
单击网站选项
如果默认节点尚未为您启动,请右键单击默认网站节点

正如我们刚才提到的,人们使用 IIS 的主要原因之一是为了便于 Web 应用程序部署。 IIS 及其高级安装程序功能允许您在多个服务器上配置和部署 Web 应用程序,而不会错过任何一个节拍。 您也不需要为每台机器创建新配置,因为 IIS 可以轻松处理这些。

如果您想配置一个新网站,您要做的第一件事就是前往“文件和文件夹”视图,您可以在其中管理现有的应用程序文件或根据需要添加新的应用程序文件。 请注意,您需要将应用程序文件放在它们各自的目录中,因为您网站的管理面板稍后会使用它们。

处理完文件后,您可以移动到 IIS 服务器视图,您可以在其中使用新网站工具栏输入新网站的名称。 接下来您需要做的是调整您网站的 HTTP/HTTPS 设置并考虑使用 SSL 来增加安全性。 以下是为您的网站或文件夹配置 HTTP 和 SSL 的方法:

确保您已使用管理员帐户登录您的 PC
按键盘上的 Win 键
键入 control 并在出现时单击“控制面板”图标
转到管理工具部分
选择 Internet 信息服务 (IIS) 管理器
在左侧部分中选择您要配置的网站
右键单击要使用 SSL 配置的网站
从上下文菜单中选择属性
导航到目录安全选项卡
选择编辑选项
单击需要安全通道 (SSL) 选项
切换需要 128 位加密选项
选择接受客户端证书以阻止没有证书的用户
选择忽略客户端证书以允许连接而不考虑证书

如何使用 SSL 保护 IIS Web 服务器?

SSL 是 Secure Sockets Layer 的缩写,它仍然是加密您与任何目标网站之间通信的最佳方式之一。 还记得不久前许多网站从 HTTP 到 HTTPS 的飞跃吗? 嗯,SSL 证书过去和现在仍然是这个过程的重要组成部分。

好消息是您可以使用 IIS 轻松地将 SSL 部署到您的网站。 另一方面,您肯定需要购买证书,因为从数据加密的角度来看,这是您的网站被确认为值得信赖的唯一方式。

因此,第一步是寻找 SSL 证书提供商并购买此类物品。 购买后,您将收到代码或证书文件。 为了使用 IIS 配置 SSL,我们需要证书文件,因此请确保在继续之前检索它。

使用 SSL 保护 IIS Web 服务器

在您的 PC 上下载证书文件(P7B 格式)
启动 IIS 管理器(在 PC 上的运行实用程序中键入 inetmgr)
从“连接”左侧窗格中选择您要使用的服务器
访问屏幕中央部分的服务器证书选项
单击右侧操作窗格中的完成证书请求超链接
在新打开的窗口中单击 … 按钮
将文件类型从 *.cer 更改为 *.*
导航到您在 PC 上下载 P7B 文件的位置
双击您的证书 P7B 文件
在友好名称字段中输入一个容易记住的名称
选择完名称后单击“确定”按钮

现在您已经成功地为您的 IIS 服务器安装了证书。 但是,这还远远不够,因为您仍然需要为您的网站绑定证书。 到最后,您将拥有一个安全的网站,其中包含与您的网站、端口和 IP 地址相关联的证书。

将安全证书绑定到网站

启动 IIS 管理器
从左侧窗格中选择要与证书关联的网站
单击右侧操作窗格中的绑定按钮
在新打开的窗口中单击添加…按钮
从类型组合菜单中选择 HTTPS
从 IP 地址菜单中选择所有未分配或网站的 IP 地址
在端口字段中输入 443
选择您之前安装的证书(它应该具有您为其选择的名称)
(可选)使用查看…按钮查看有关您的证书的一些详细信息
如果您在同一 IP 地址上托管多个域并在“主机名”字段中键入名称,请切换“需要服务器名称指示”选项
单击“确定”按钮关闭“添加站点绑定”窗口
关闭站点绑定窗口

因此,我们设法在您的 IIS Web 服务器上安装 SSL 并将其与您的网站相关联。 如果需要,您可以使用上述步骤将证书与多个网站相关联。 但是,我们还需要做一件事:将传入的 HTTP 流量重定向到 HTTPS,以确保访问者流量的加密。

  如何(以及为什么)运行 Windows 的便携版本

将 HTTP 重定向到 HTTPS

访问官方 URL 重写扩展页面
单击绿色的大安装此扩展程序按钮
启动可执行文件并完成 URL Rewrite 的安装
运行 IIS 管理器
选择您要为其重定向流量的网站
双击屏幕中央部分的 URL 重写图标
单击添加规则按钮
在新打开的窗口中选择空白规则(入站规则部分)
在名称字段中输入一个易于记忆的名称
将请求的 URL 字段设置为匹配模式
在使用字段中选择正则表达式
在模式字段中键入 (.*)
检查忽略大小写选项
向下滚动并展开条件部分(如果需要)
从逻辑分组菜单中选择匹配所有选项
单击添加按钮
在条件输入字段中输入 {HTTPS}
从检查是否输入字符串菜单中选择匹配模式
在模式字段中键入 ^OFF$
检查忽略大小写选项
单击确定按钮
向下滚动并展开操作部分(如果需要)
从操作类型菜单中选择重定向
在重写 URL 字段中键入 https://{HTTP_HOST}/{REQUEST_URI}
确保取消选中附加查询字符串
从重定向类型菜单中选择永久 (301)
单击右侧菜单(操作窗格)中的应用按钮

就是这样,您现在已经在您的 Web 服务器上完全实现了 SSL,将其绑定到您的网站,并将站点配置为将传入的 HTTP 流量重定向到 HTTPS。 如果操作正确,尝试使用 HTTP 访问您网站的访问者将被自动重定向到其安全的 HTTPS 对应项。

什么是虚拟目录?

正如我们之前所建立的,创建和管理网站并不是 IIS 能够做的唯一事情。 您还可以创建我们已经提到的应用程序,但最重要的是,您可以创建虚拟目录,只需给它们一个名称,将它们映射到物理目录。

此功能的工作方式是让用户通过直接名称快速访问托管在服务器上的各种类型的内容。 当然,该内容可以是网站,但也可以是照片、视频或其他类型的较小媒体文件。

回到 IIS 6.0 大惊小怪的日子,虚拟应用程序和目录被 IIS 视为单独的对象。 因此,应用程序由以下元素组成:

应用根
应用隔离
应用友好名称
AppPoolId

从 IIS 7.0 开始,虚拟应用程序和目录在层次结构中进行组织,但它们仍被视为单独的对象。 因此,在层次结构中较高的网站可以包含多个应用程序或映射到 PC 上物理位置的虚拟目录。

IIS 中的日志文件是什么?

在 IIS 日志文件中,它们的用途与您可能遇到的任何其他地方相同。 您可以使用这些文件来检查 Web 服务器上的事情是如何展开的,查看重要事件,最重要的是,如果发生任何故障,您可以了解哪里出了问题。

换句话说,IIS 日志文件会密切关注 Web 服务器上发生的所有事情,以备不时之需。 记录数据的一些示例包括事件的精确日期和时间、传输的数据量以及与事件相关的 IP 地址。

在 IIS 7.0 及更高版本上查找日志文件

点击键盘上的 Win 键
键入控制并选择控制面板
双击管理工具选项
启动 Internet 信息服务 (IIS)
从左侧窗格中选择您的网站
单击(或双击)屏幕中央部分的日志记录图标
识别屏幕底部的目录对话框
单击“浏览”按钮以到达系统上 IIS 日志文件的位置

在 IIS 6.0 及更早版本上查找日志文件

重复上述说明中的步骤 1-4
右键单击您的网站
从上下文菜单中选择属性
导航到网站选项卡
访问活动日志格式部分
单击属性按钮
检查屏幕底部的日志文件目录和名称

我可以更改 IIS 中的端口吗?

默认情况下,IIS 对所有 HTTP 流量使用端口 80,但这并不意味着如果您愿意或需要,您不能将其更改为另一个值。 更改为不同的端口可以帮助您避免某些与防火墙相关的连接问题或躲避针对某些服务端口漏洞组合的攻击。

更改 IIS 中的默认端口

启动 IIS 管理器
从左侧窗格中右键单击您的网站
从上下文菜单中选择属性
找到 TCP 端口字段
在 TCP 端口字段中键入新端口的值

由于 IIS 通常默认使用端口 80,因此无论何时您想要测试网站的功能(例如,从浏览器内部)都无需指定它。 您只需输入您的域名,您应该能够顺利访问您的网站。

但是,如果您坚持更改默认端口,则每次尝试从 Web 浏览器访问您的网站时都需要指定它。 您可以通过在域名末尾添加 :port number (其中端口号是您正在使用的实际端口)来做到这一点。

例如,如果我们将网站的端口更改为 2609,则访问它看起来像这样:wdzwdz.com:2609。 很简单,对吧?

现在,如果您使用的是旧版本的 Windows,并且隐含的是旧版本的 IIS,则需要以不同的方式执行一些操作来更改默认端口。

在 Windows 8.1 上更改 IIS 端口

在您的主页上找到搜索框
类型 IIS 管理器
从搜索结果中选择 Internet 信息服务管理器
单击左侧菜单中的默认网站
从右侧菜单中选择绑定选项
在主屏幕上突出显示 http
单击编辑按钮
在端口字段中输入新值
单击确定按钮并关闭窗口
在 IIS 管理器的左侧部分中选择服务器节点
单击右侧边栏中的重新启动服务器按钮

如何监控 IIS?

如果您不完全喜欢通过手动测试和经常检查日志文件来保持秩序(我们知道),您可能需要考虑依靠第三方软件解决方案来监控您的 IIS Web 服务器你。

SolarWinds 服务器和应用程序监视器

SolarWinds Server & Application Monitor 是目前最好的第三方实用程序之一,它可以帮助您监控 IIS 网站、服务器、应用程序或虚拟目录,而无需付出很大的努力。 你只需将它指向你想要跟踪的东西,让它发挥它的魔力。

该工具不仅可以让您知道您的网站和 Web 服务器是否已启动并运行,还可以为您提供一系列令人印象深刻的关键指标,包括但不限于 CPU、内存和磁盘使用情况以及响应时间。

此外,如果您正在监控的某个网站出现问题,SolarWinds Server & Application Monitor 可以自动为您重新启动它,以尝试以简单的方式解决问题。

SolarWinds Server & Application Monitor 的屏幕分为多个部分,您可以在其中监控和分析您的应用程序和网站,访问以图表形式显示的应用程序运行状况概览,甚至只需按一下按钮即可管理应用程序。

您还可以使用此工具来跟踪您的 SSL 证书的到期日期,以便在更新即将到期的证书时始终掌握最新信息。 更重要的是,您可以使用 SolarWinds Server & Application Monitor 来管理多个网站或服务器的 SSL 证书,以增加便利性。

如果您好奇并想试用 SolarWinds Server & Application Monitor,您会很高兴知道有 30 天的免费试用期,以便您可以在购买许可证之前测试运行其功能。

什么是 IIS – 结论

总而言之,IIS 是一种方便的 Microsoft Web 服务器服务,您可以使用它来创建自己的服务器,以及在其中管理网站、应用程序和虚拟目录,而不会费力。 它目前是世界上第二受欢迎的 Windows Web 服务器,仅次于完全免费的替代方案 Apache HTTP。

IIS主要用于管理商业网站,需要购买商业许可证。 此类许可证的价格取决于您计划在网站上拥有的用户数量。

配置 IIS 有点直观,但您需要精通技术才能了解其所有功能,了解每个功能的作用并配置它们以充分利用您的 Web 服务器和相关网站或应用程序。