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

IIS,即Internet Information Services,前身是Internet Information Server,是微软专为Windows操作系统开发的Web服务器,其历史可追溯至NT系列。

此Web服务器允许Windows用户在网络上托管各种内容,包括媒体文件、文档,乃至功能完善的网站。 虽然Apache目前在Windows Web服务器领域占据主导地位,但IIS依然保持着其强大的竞争力,位居第二。

IIS 的功能是什么?

IIS 以其用户友好的图形界面(GUI)而闻名,这使得管理Web服务器及其关联的网站变得非常简单。 通过IIS的GUI,用户可以在一个中心位置轻松设计、定制、配置和发布网站。

它内置了IIS管理器,一个强大的网站管理工具,允许用户调整各种设置,如安全配置、性能参数、日志记录选项,以及网站的错误页面或默认设置。

从技术层面来看,IIS功能全面,能够轻松处理静态和动态网页。 这意味着它不仅能用于创建和发布HTML页面,还能管理PHP页面和ASP.NET应用程序。

得益于其灵活性,IIS能够执行动态网页中的脚本和应用程序,并将结果呈现给用户的Web浏览器。 对于静态网站,过程更为直接:IIS简单地将HTML内容和图像发送给访问者的浏览器。

IIS 的用途是什么?

由于微软的强大支持和众多高级功能,IIS是创建和管理商业网站(如在线商店或企业宣传网站)的理想选择。

然而,将IIS用于商业用途意味着需要购买商业许可证,且许可证价格会根据用户数量而有所不同。

我们已经了解到IIS能够创建和托管网站,并支持静态和动态Web内容。但IIS的功能远不止于此。例如,可以通过安装内置模块来扩展服务器的功能。

例如,可以在服务器上安装流媒体模块,让网站访问者可以享受流媒体内容。 您还可以使用URL重写模块,创建强大的URL规则,使网址更易于记忆,并提升搜索引擎优化效果。

毋庸置疑,如果需要快速创建和发布网站,IIS是一个不错的选择。 不过,考虑到其开源性和免费使用特性,Apache HTTP仍然是首选。

IIS 版本发展史

最初,IIS是为了替代一个作为研究项目开发的Web服务器。 微软的第一个Web服务器项目是作为免费软件发布的,专门为EMWAC(欧洲微软Windows NT学术中心)设计。

但由于EMWAC服务器无法处理microsoft.com网站的所有流量,该项目被放弃,微软转而开发了IIS。

值得注意的是,大多数版本的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 Option Pack的一个组件发布
添加了基于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请求端口监听器

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,则计算机上应已安装IIS 10.0的某个版本。

但是,微软默认不激活IIS,因此您需要手动启用它。 不过不用担心,操作并不复杂。 只需按照以下步骤即可在计算机上激活IIS:

打开控制面板
转到程序和功能
点击“启用或关闭Windows功能”按钮
选中“Internet Information Services”复选框
点击确定按钮

此时,您可能需要重启计算机,以便系统加载所有必要的配置文件,并让IIS完全可用。 当然,它也可能在不重启的情况下工作,但在启用新功能后重启系统总是明智之举。

您还可以使用PowerShell在计算机上启用IIS。 如果您不熟悉PowerShell,它是一个功能强大的工具,很多人会将其误认为是CMD。 PowerShell远比CMD复杂得多,这里不做深入探讨。 以下是在Windows计算机上使用PowerShell启用IIS的方法:

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

等待过程结束

如您所见,使用PowerShell在Windows 10计算机上启用IIS后无需重启。 若要撤销操作,可以使用以下命令通过PowerShell禁用IIS:

Disable-WindowsOptionalFeature –online –featurename IIS-WebServerRole

请注意,禁用此功能时,即使是PowerShell也建议您重启计算机。 当然,您也可以稍后重启,但在此期间不应启动任何新项目。

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路由后,页面开始显示。

什么是工作进程?

值得注意的是,工作进程不止一个。 事实上,有几个这样的实体可以确保Web服务器及其托管内容的正常运行,无论是网站还是应用程序。

因此,IIS的工作进程负责为用户提供在IIS中配置的应用程序和网站的执行环境。 这些进程包含对于上述服务的正常运行至关重要的信息。

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

可以使用API终止工作进程,只需向工作进程端点发送DELETE请求即可。

什么是应用程序池?

尽管名称具有一定的自解释性,但IIS应用程序池的用途更为复杂。 应用程序池包含工作进程,因此它扮演着容器的角色。 此外,它将应用程序彼此隔离,无论它们是在同一台服务器上运行还是在不同的服务器上运行,这与池的通常工作方式相反。

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

如何配置IIS服务器?

您已经在计算机上启用了IIS,并且了解了它的一些组件,现在让我们看看如何正确配置它,以便可以轻松运行自己的Web服务器。

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

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

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

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

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

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

SSL,即安全套接字层,仍然是加密您与任何目标网站之间通信的最佳方式之一。 记得不久前许多网站从HTTP跳转到HTTPS吗? SSL证书是这一过程的关键部分。

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

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

使用SSL保护IIS Web服务器

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

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

将安全证书绑定到网站

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

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

将HTTP重定向到HTTPS

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

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

什么是虚拟目录?

如前所述,创建和管理网站并不是IIS的全部功能。 您还可以创建我们之前提到的应用程序,但最重要的是,您可以创建虚拟目录,只需为它们命名,并将它们映射到物理目录。

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

在IIS 6.0时代,虚拟应用程序和目录被视为单独的对象。 因此,应用程序由以下元素组成:

应用根目录
应用程序隔离
应用程序友好名称
AppPoolId

自IIS 7.0起,虚拟应用程序和目录在层次结构中组织,但它们仍被视为独立对象。 因此,层次结构中较高的网站可以包含多个应用程序或映射到计算机物理位置的虚拟目录。

IIS中的日志文件是什么?

在IIS日志文件中,其用途与您可能在其他地方遇到的日志文件相同。 可以使用这些文件来检查Web服务器上的事件,查看重要事件,并且在发生故障时,了解问题所在。

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

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

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

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

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

可以更改IIS中的端口吗?

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

更改IIS中的默认端口

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

由于IIS通常默认使用端口80,因此无论何时需要测试网站的功能,都无需指定该端口。 只需输入您的域名,就应该可以顺利访问您的网站。

但是,如果更改了默认端口,则每次尝试从Web浏览器访问您的网站时都需要指定它。 您可以通过在域名末尾添加“:端口号”(其中端口号是您正在使用的实际端口)来完成此操作。

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

如果使用的是旧版本的Windows,以及相应版本的IIS,则需要以不同的方式执行操作才能更改默认端口。

在Windows 8.1上更改IIS端口

在主页上找到搜索框
键入“IIS管理器”
从搜索结果中选择“Internet Information Services管理器”
点击左侧菜单中的“默认网站”
从右侧菜单中选择“绑定”选项
在主屏幕上突出显示“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是一款方便的微软Web服务器服务,您可以用来创建自己的服务器,并管理网站、应用程序和虚拟目录。 它目前是世界上第二受欢迎的Windows Web服务器,仅次于完全免费的替代方案Apache HTTP。

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

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