IIS7.0快速入门

相关资源

各Windows版本对应IIS

Windows系统 IIS版本
Windows NT Server 3.5.1 1.0
Windows NT Server 4.0 2.0
Windows NT Server 4.0 SP3 3.0
Windows NT Server 4.0 SP3 OptionPack 4.0
Windows 2000 5.0
Windows XP Professional 5.1
Windows Server 2003,Windows XP Professional X64 6.0
Windows Vista 7.0
Windows 7,Windows Server 2008 R2 7.5
Windows Server 2012 8.5
Windows Server 2016,Windows Server 2019,Windows 10 10.0

视频笔记与扩展阅读

1、IIS安装

  • Windows Server 2008 R2上安装IIS

在"服务器管理器"中选择添加角色"Web服务器(IIS)"来进行安装,之后在"开始菜单->管理工具->Internet信息服务(IIS)管理器"打开即可。

  • Windows 7上安装IIS

在"控制面板->程序->打开或关闭Windows功能",勾选上"Internet信息服务",安装完成后打开IIS管理器即可。

后续的例子中,我们默认服务器安装的是Server 2008 R2系统,客户端安装的为Win7系统,因此在服务器上增删IIS功能都通过"添加角色"完成,在客户端上增删IIS功能则通过"打开或关闭Windows功能"完成。

2、模块化组件

默认安装的IIS出于安全的考虑,并没有安装所有的功能。可根据你的实际需求,按照第一节同样的步骤,勾选所需的功能,重新确认安装即可。

视频以aspx网页访问为例,介绍了如何为IIS服务器添加asp.net的处理。

本节标题的意思是,IIS将所有功能分成了若干个模块(或者说分类)。

3、配置文件

  • 服务器级别的配置文件

存储于"C:\Windows\System32\inetsrv\config\applicationHost.config"中。

在服务器上的设置,会被继承到网站上。

服务器上的条目类型是"本地",被继承的项目,在网站上的条目类型是"继承"。

  • 网站配置文件

默认网站的配置文件存储于"C:\Windows\inetpub\wwwroot\web.config"中。

4、远程管理

要从另外一台电脑直接远程操作服务器上的IIS的话,分两步走:

  • 服务器端

在服务器上"新增角色->管理工具->远程管理服务"。

在IIS管理器中,选择"服务器",选择"管理服务",默认情况下,管理服务并没有打开,需要手动应用并启动。

  • 客户端

在"控制面板->程序->打开或关闭Windows功能->Internet信息服务->管理工具->IIS管理控制台",安装IIS管理工具。

打开IIS管理器,在"起始页"上右键选择"连接至服务器",输入服务器地址,服务器的用户名和密码进行链接,连接成功的话我们就可以在客户端上远程管理服务器上的IIS了。

注意:IIS10.0需要安装扩展才有起始页选项,IIS Manager for Remote Administration 1.2

扩展:

5、远程管理高级设置

要更改服务器端管理服务的话,需要先停止,修改完成后,选择应用,再重新启动管理服务。

IIS管理服务

可以创建IIS管理器的用户。

无法在服务器级别上直接设置IIS管理器的权限,只能在每个网站上直接设置网站的IIS管理器的权限。其实就是选择可以操作网站的用户,如下所示:

IIS管理器权限

现在在客户端的IIS管理器上,点击"起始页",可以选择"连接到站点",此时除了输入服务器名称外,还需要输入网站名称,如下所示:

连接到站点

如果服务器端设置了允许访问网站的IIS用户,这里的用户名和密码就可以使用相应的IIS管理器用户。

视频演示的时候,在客户端想禁用网站默认文件时,提示了"由于权限不足而无法写入配置文件"的错误。此时需要在服务器端将相应网站的"web.config"文件的只读属性改成可写才行。

个人总结:第4和第5两小节主要目的是提供在客户端无需通过远程桌面登录服务器,而直接操作服务器IIS管理器的方法。

6、创建网站

展开服务器,在"网站"上右键,选择添加网站:

创建网站

网站名称:同个服务器下,同名网站只能有一个。

应用程序池:简单来讲,某个网站崩溃了不会影响,跟它用的不是同一个ApplicationPool的网站。创建一个新网站时,默认会给你创建一个同名的应用程序池。

物理路径:网站源码存储目录,如果访问的是共享文件夹,需要在"连接为..."里设置用户名和密码,并在"测试设置"中验证通过。

绑定:

  • 多个网站共用一个端口的话,仅有一个网站可以启动。
  • 多个网站共用一个端口,如果要同时启动的话,需要指定主机名。

如下图所示,我们添加一个跟默认网站同是80端口的网站。

  • 如果我们不填写主机名,那么新增的网站和默认网站只有一个可以启动,俩者是互斥的。
  • 如果我们填写了主机名,则两者可以同时启动,并通过主机名访问到不同的网站,尽管它们使用的端口都是一样的。暂时没感觉出这一特性有什么用处。

添加同端口网站

注意:如果你无法在inetpub目录里新建txt或其它文件,这是因为你登录的用户权限不够导致的,你可以选择登录administrators账户,也可以"右键inetpub->属性->安全->选中你登陆的用户->编辑->勾上完全控制",然后确定即可。

7、添加虚拟目录和应用程序

放置在网站目录下的文件夹和网页是可以直接通过url进行浏览的。

放置在网站之外的文件夹,如果想像内置目录那样进行浏览,就可以创建虚拟目录,类似于创建一个文件夹的快捷方式,指定好别名和物理路径后,就可以像网站内置目录那样进行访问。

添加应用程序和虚拟目录不同之处在于,除了指定别名和物理路径之外,还可以指定应用程序池。在指定了不同的应用程序池之后,新增的应用程序的运行就不会影响到原有网站。

8、默认文档和目录浏览

"选择网站->默认文档",通过上移、下移,可以修改默认文档加载的顺序。也可以通过添加和删除,来设置自定义的默认文档。

在浏览网站时,如果在网站根目录下查找不到任何可以显示的默认文档,就会显示"403错误:Web服务器被配置为不列出此目录的内容。"

"选择网站->目录浏览",默认情况下是禁用的状态,此时我们可以将它启用,当没有可以显示的默认文档时,就会返回一个根目录下所有内容清单的网页,如下所示:

启用目录浏览

9、自定义错误页

如果点击网站,看不到"错误页"这个模块的话,需要在IIS中安装相应的功能。

默认情况下,在本地请求出现错误时,会出现详细的错误信息,而远程请求出错则会出现自定义错误页。

10、HTTP重定向

点击网站,如果看不到"HTTP重定向"这个模块的话,需要在IIS中进行安装。

默认情况下,HTTP重定向这个功能并没有启用,勾选上"将请求重定向到此目标",并输入URL后点击应用即可。

重定向行为:

  • 将所有请求重定向到确切的目标(而不是相对于目标):直接跳转,上面的URL即是最终页面;未勾选的话,将会计算重定向前的URL的目录层级,并组合到上面定义的URL之后,进行跳转。
  • 仅将请求重定向到此目录(非子目录)中的内容:访问子目录的请求不会被重定向,仅仅只影响访问此目录的请求。勾选与否似乎都不影响,视频里也是快速带过,语焉不详。
  • 状态代码:推荐使用301,具体还是根据自己需求来定。

扩展:301跳转:IIS服务器网站整站301永久重定向设置

IIS6整站重定向

IIS7整站重定向

IIS6 II7
上面输入的准确URL 将所有请求重定向到确切目标(而不是相对目标)
输入的URL下的目录 仅将请求重定向到此目录(非子目录)中的内容
资源的永久重定向 永久(301)

注意:重定向后的网址后面一定要带上“\(S\)Q”才能让网页成功匹配新域名,否则会出现:

  • Olddomain→Newdomain(老域名正常跳转到新域名首页)

  • Domain/1.html→Newdomain(内页依然是跳转到新域名首页)

$S:传递URL的后缀到新的URL。

$P:传递URL中的query参数到新的URL,不包括问号(?)。

$Q:传递URL中的query参数到新的URL,包括问号(?),所以在设置URL地址时,后面不要带问号。

$V:传递请求的URL,但是不包括服务器名和任何参数。

11、WEBDAV发布

如果看不到"WEBDAV..."模块的话,需要在IIS里安装"WEBDAV发布"和"Windows身份验证"两个功能。

安装完成后需要启动WebClient服务,该服务使基于Windows的程序能够创建、访问和修改基于Internet的文件。

"选择站点->选择身份验证->选择Windows身份验证->启用"。

"选择站点->选择WebDAV创建规则->启用WebDAV->添加创作规则"。

以上这些步骤都完成以后,就可以通过"映射网络驱动器",将网站目录映射到一个磁盘中,此后可以通过这个磁盘对网站文件进行操作。

映射网络驱动器

12、IIS日志

打开IIS管理器->选择服务器->点击日志功能图标,如下图所示:

IIS日志

默认情况下,日志是启用的状态,当然你也可以禁用。

可以按照每个网站一个日志或者每个服务器一个日志。

日志文件格式默认为"W3C",这是一种可以自定义的 ASCII 格式,可以包含各种不同的字段。为了缩小日志文件,可以只包含您认为重要的字段,而略去不需要的字段。字段之间以空格分开,所记录的时间为 UTC(格林威治标准时间)。示例:

#Software: Microsoft Internet Information Services 10.0
#Version: 1.0
#Date: 2021-05-03 01:32:48
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
2021-05-03 01:32:48 ::1 GET / - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/90.0.4430.93+Safari/537.36 - 200 0 0 274
2021-05-03 01:32:48 ::1 GET /iisstart.png - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/90.0.4430.93+Safari/537.36 http://localhost/ 200 0 0 6
2021-05-03 01:32:48 ::1 GET /favicon.ico - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/90.0.4430.93+Safari/537.36 http://localhost/ 404 0 2 1

IIS日志文件格式以"in开头年份后两位+月份+日命名",如下所示:

58.56.66.29,-,12/3/2014,0:00:27,W3SVC67659880,AY130731155351Z,911.911.911.911,156,166,38630,200,0,GET,/index.aspx,-,

意为:本地时间2014年3月12日0点0分27秒,IP地址为58.56.66.29的匿名用户从IP地址为911.911.911.911的服务器AY130731155351Z,对index.aspx页面发出GET命令,此HTTP请求有166个字节,处理所用的时间是156毫秒,最后向匿名用户返回38630字节的数据,没有错误。

NCSA通用的日志文件格式:NCSA 公用格式是一种固定的 ASCII 格式,无法进行自定义。这种格式适用于网站,但不适用于 FTP 站点。它记录有关用户请求的基本信息,例如远程主机名、用户名、日期、时间、请求类型、HTTP 状态码以及服务器发送的字节数等。各项之间用空格分开,所记录的时间为本地时间。示例:

172.21.13.45 — REDMOND\fred [08/Apr/1997:17:39:04 -0800] "GET /scripts/iisadmin/ism.dll?http/serv HTTP/1.0" 200 3401 

意为:1998 年 4 月 8 日下午 5 点 39 分,REDMOND 域中 IP 地址为 172.21.13.45、名为 Fred 的用户发出一个 HTTP GET 命令(即下载一个文件)。向用户 Fred 返回了 3401 字节的数据,没有错误。

ETW事件:Event Tracing for Windows,提供了一种对用户层应用程序和内核层驱动创建的事件对象的跟踪记录机制。为开发者提供了一套快速、可靠、通用的一系列事件跟踪特性。

日志分析工具:Log Parser 2.2

日志分析工具GUI:Log Parser Lizard 官方正版脚本之家中文学习版

扩展:

13、管理应用程序池

选择服务器->选择应用程序池,可以添加应用程序池。

.NET Framework版本选的是CLR版本,目前就CLR2.0和CLR4.0可选,当然你也可以选择无托管代码。

托管管道模式:IIS 7开始可以使用集成模式,如果集成模式无法使用,才会考虑使用经典模式。

应用程序池回收相当于IIS服务器重启,应用程序池内存清空,所有数据被清除。

访问某个网站就会启动它相应的应用程序池,可以在进程管理器中看见w3wp.exe进程。

可以在应用程序池里设置进程模型的最大工作进程数,这样IIS就会为该网站打开更多的w3wp.exe进程来处理网站请求。

扩展:

14、证书管理

选择服务器->选择服务器证书,打开服务器证书模块。

如果没有证书服务器,可以创建一个自签名的证书。

如果域中有证书服务器,可以创建域证书,需要选择证书颁发机构。

如果以上两者都没有,我们想使用了第三方机构提供的证书,我们可以创建证书申请:

  • 输入完整的证书信息,选择加密服务提供程序和加密密钥位长,然后将我们的证书申请存储到本地的一个txt文件中。
  • 到加密服务提供程序的第三方证书颁发机构的网站上,选择申请证书->选择高级证书申请->选择based64的方式提交一个证书申请->将上面保存的txt中的内容复制提交到证书服务器上->设置证书模板(Web服务器)->提交,就完成了证书的申请。
  • 颁发机构颁发证书之后,你就可以下载证书,保存到本地。
  • 回到本地服务器,打开服务器证书模块,点击完成证书申请,选择我们刚才下载下来的证书,输入好记的别名,确定即可。

完成证书创建以后,我们找到需要SSL的网站,点击右侧菜单里的绑定,在添加网站绑定中,类型选择为https,选上SSL的证书,这样就完成了所有的设置。

注意:视频里选择的是域签名的证书,我偷懒选的是自签名的证书,自签名的没有用。

扩展:架设证书服务器以及让IIS启用HTTPS服务

15、HTTP响应标头

可以在服务器和网站分别设置HTTP响应头。

可以设置常用标头:保持HTTP连接和使Web内容过期。

也可以添加自定义的HTTP响应头,你可以任意输入名称和值,但建议还是以官方文档中明确定义的名称为佳。

这里用到了Microsoft IIS 6.0 Resource Kit Tools来查看服务器返回的信息,安装完成后,打开Wfetch,后续的操作比较简单就不再赘述,可以在Response中看到你自定义的响应标头。

扩展:HTTP头部详解

16、IP地址和域限制

如果在IIS管理器中没有找到"IP地址和域限制"功能模块,需要先安装"IP安全和域限制"功能。

我们可以在服务器和特定网站上分别设置限制,可以添加允许访问的IP或者拒绝访问的IP,默认情况下未指定的IP都是允许访问网站的。

如果启用了域名限制,服务器将检查每个请求的域名,开销比较大。

如果我们同时设置了允许的条目和拒绝的条目,我们可以调整他们的顺序,把允许的条目都移至顶端。

17、身份验证

默认情况下,IIS为新建的网站启用了匿名身份验证。因此首次安装完IIS后,你可以直接访问默认创建的Default Web Site而不需要输入任何用户名和密码。

假如你在"身份验证"模块里禁用了"匿名身份验证",再次访问网站的时候就会提示一个"401 Unauthorized"错误。

选择"匿名身份验证"进行编辑,可以看到默认的匿名用户标识为"IUSR",你也可以设置为别的有效用户。你可以在你网站的实际文件夹上(如默认网站的目录是C:\inetpub\wwwroot)右键属性,点击安全,然后点击编辑看到所有可用的用户,你可以看到IIS_IUSRS没有修改权限。将所有权限都改成拒绝,再次访问网站,会得到一个"500 Internal Server Error"错误,可以看出"匿名身份验证"是通过这个用户对文件夹的权限来实现的。

以下是几种常用的验证方式:

  • 基本身份验证:用户访问网站时要求输入用户名/密码,然后用Base64加密后传给服务器,容易被破解,需要与SSL加密协议配合使用。
  • 摘要式身份验证:据视频所说比基本身份验证的加密方式要安全一些,不容易被破解。
  • Windows身份验证:客户端与服务器处于同一个内网中。客户端会将当前登录用户作为凭据提供给服务端,就不需要再次输入用户名和密码。

扩展:微软IIS中的IP限制企业实践

18、MIME类型

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

如果在浏览器中打开的文件没有设置相应的MIME类型,就会得到一个"404.3:由于扩展配置问题而无法提供您请求的页面"错误,此时应该添加MIME映射。

MIME请求的基本过程:

  • 客户端请求文件,服务器接收到这个请求;
  • 服务器端查看文件的扩展名,将MIME类型返回给客户端;
  • 客户端查找本地注册表,查看是否有应用程序可以直接打开该MIME类型的文件;
  • 如果没有合适的应用程序,则会直接下载该文件。

如果没有设置相应的MIME类型,试图下载该文件的时候会提示"失败-未发现文件"。

扩展:IIS各种身份验证的详细测试

19、授权规则

如果没有"授权规则"模块,请添加"URL授权"功能。

选择网站,点击授权规则,打开功能界面,会发现默认已经添加了一条"允许所有用户"的条目。

授权规则中将访问权限授予特定用户这点很容易理解,值得一提的是,还能将规则应用于特定谓词。

授权规则

如果指定的谓词未被授权访问,浏览器会先提示输入用户名/密码,如果仍然没有权限访问,则会得到"401.2 - Unauthorized"错误。

20、请求筛选

如果没有"请求筛选"模块的话,需要先安装"安全性->请求筛选"功能。

请求筛选模块

举个例子,假如某种扩展名的文件,允许为False,也就是配置为"拒绝文件扩展名",那么客户端在请求该类型文件资源时,就会得到一个"404.7-请求筛选模块被配置为拒绝该文件扩展名"的错误。

不想被用户访问的文件夹或者文件可以在"隐藏段"里进行设置,如"web.config"文件等。

标头里可以设置标头大小限制。

可以在查询字符串中设置允许或者拒绝的字符串,如果拒绝某个字符串,只要查询字符串中含有该字符串,请求就会被拒绝。

以上所有的单独设置,都可以在"规则"标签页里进行统一设置。

21、压缩和缓存

如果客户端和服务器之间的带宽比较有限,我们就可以使用压缩这个功能。默认情况下IIS已经安装了静态内容压缩,我们还可以把动态内容压缩也装上。

选择服务器节点,选择"压缩"模块,如下所示:

服务器响应压缩

每个网站也可以单独启用静态/动态压缩功能,只不过没有细致的配置而已。

如果10秒钟以内有多个客户端请求同一个静态网页的话,服务器就会对该网页进行压缩,如果单单只有一个客户端请求,就算你启用了静态内容压缩,服务器也不会进行压缩操作。

动态内容压缩需要更多的服务器CPU资源。默认情况下,可以上升到CPU使用率的90%。我们可以使用这样的命令对动态压缩的CPU最大使用率改成50%:

%windir%\system32\inetsrv\appCmd set config -section:httpCompression /dynamicCompressionDisableCpuUsage:50

执行结果:

修改动态压缩最大CPU使用率

选择站点,点则"输出缓存"模块,点击"编辑功能设置...",如下所示:

输出缓存

当启用了缓存之后,我们就可以点击"添加"来添加缓存规则,如下图所示:

添加缓存规则

根据实际的业务需要来设置缓存规则,来提高对客户端的响应速度。

22、FTP服务器

安装"FTP服务"之后,才可以在IIS里创建FTP站点,之后就可以通过FTP客户端来上传/下载文件,默认创建了一个"C:\inetpub\ftproot"目录。

之后我们可以到IIS管理器里,找到"网站"文件夹上,右键选择"添加FTP站点",如下图所示:

添加FTP站点

创建完ftp站点后,我们打开CMD窗口,就可以通过ftp指令连接上服务器:

ftp登录

FTP站点拥有的功能模块和IIS的比较类似,这里着重提了两块:

  • FTP消息:就是各部分的提示消息。
  • FTP用户隔离:可以设置不隔离时,用户登录的初始目录,默认是站点根目录,也可以选择初始目录为用户名对应的目录。也可以选择隔离用户,这样用户只能访问受限的目录。

23、Web平台安装器

需要先安装Web Platform Installer,安装完成后,在IIS管理器中可以看见"Web 平台安装程序",点击进入该模块,如下图所示:

Web平台安装程序

安装完成之后,就可以通过这个程序来安装各种IIS功能,与第一小节提到的一样。不仅如此,还可以在这里看到很多Web开发工具和其他的IIS扩展。

24、URL重写工具

可以在Web平台安装程序里进行安装,如下图所示:

Web平台安装程序安装URL

这里因为我的是IIS10版本,安装会出错,有两个解决方式:

  • 在网上找了个解决方案,运行regedit,打开注册表编辑器,找到"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp"位置,把MajorVersion的值改为9之后。安装完成之后,再把MajorVersion的值改回10,重启一下iis解决。但我这还是不行,错误日志也找不到在哪看。
  • 直接下载安装包进行安装。

URL重写工具有一个很经典的应用:假如网站是经过SSL加密的,客户在发送http请求的时候,服务器就可以自动改写为https进行加密。

选择一个站点,点击"URL重写"模块,如下图所示:

URL重写功能界面

视频里仅仅是快速带过了创建规则的过程,我们可以参考这片文章来完成空白规则添加:IIS反向代理和URL重写

扩展:

25、应用程序路由

跟上面一样,我还是无法通过Web Platform Installer进行安装,总是提示"The Window Installer Service could not be accessed...",我尝试切换到Administrators下,或者以管理员身份打开IIS,进行安装,都失败了。查了一下Microsoft上的提问,仅2020年10月份的"Adding Custom Feeds in Web PI 5.0"跟我们的情形有点像,提问人说他"It works with my previous win7 machine but with Web PI 3.0,Seems that win10 doesnt work with this Web PI5.0 version is that right?",我们也正好是"Win10 + WebPI5.1"的环境,这问题至今没有解决。

只能手动下载扩展:Application Request Routing

下载完成后,我们点击ARR.exe进行安装,第一次提示"安装External Cache 1.0"成功。我们再次运行ARR.exe,第二次提示"安装应用程序路由"成功。

让我们回过头来看一眼视频里还安装了哪些组件:

视频演示时安装的组件

除了安装了External Cache 1.0和Application Request Routing 2.5之外,中间还需要Web Farm Framework 1.1的支持,可当我们尝试去下载的时候,却提示"We're sorry, this download is no longer available."

没办法,还是要找百度,终于在一片没用的网页里找到了唯一一个能下载并安装的:Web Farm Framework

注意:如果在安装的时候你得到一个提示:"需要IIS7.0或以上版本才可以安装",这是因为10.0在跟7.0做字符串比较的时候,1小于7。

解决方法:通过Win+R,运行regedit,打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp,将MajorVersion值改成9,反正比7大即可。安装完成后再改回10...后面出现类似的问题都是同样的解决手段

成功安装后,会出来"Server Farms"节点,我们就可以开始创建服务器场,如下所示:

创建Server Farm

创建完成之后,选中我们创建的Server Farm,就可以进入Load Balance负载均衡的设置,如下所示:

ServerFarm功能模块

扩展:

26、搜索引擎优化工具包

首先,在Web平台安装工具上查找不到这个工具包了,不管你搜Search Engine也好,SEO也罢,中文的"搜索引擎",都找不到这个工具包。

我们到微软官网上来找:Search Engine Optimization Toolkit,点击Install,指向的是一个错误页:"We're sorry, this download is no longer available"。

所幸我们在百度上找到了对应的插件,根据自己操作系统版本进行安装,重新打开IIS,对默认站点进行分析,可以看到下面这样子:

IIS搜索引擎优化工具包分析报告

除了可以对站点进行分析之外,还可以帮助你创建网站地图,或者帮你阻止一些不想被搜索引擎收录的页面,如下所示:

搜索引擎功能界面

posted @ 2023-12-20 19:29  NPC老郑  阅读(41)  评论(0编辑  收藏  举报