IIS使用指南之三 :创建和配置Web站点
一个IIS服务器上可以架设多个Web站点,IIS服务器通过网站标识来区分不同的Web站点。网站标识分为HTTP标识和SSL标识两部分,一个Web站点可以同时具有多个HTTP标识或多个SSL标识,但是至少必须具有一个HTTP标识。
HTTP标识是以下三个属性的组合,只要其中一个属性在IIS服务器的所有HTTP标识中具有唯一值,则IIS服务器认为此HTTP标识是唯一的:
-
分配给Web站点的IP地址;此Web站点侦听客户发送的HTTP请求的IP地址;
-
分配给Web站点的TCP端口;此Web站点侦听客户发送的HTTP请求的TCP端口,如果不是标准的HTTP端口(TCP 80),那么客户端在访问时必须明确指定端口号;
-
分配给Web 站点的主机名头;此Web站点的主机名头(域名),当指定主机名头时,客户端访问时必须明确指定主机名头。
对于网站标识来说,SSL标识不是必需的,即可以不具有SSL标识。SSL标识是以下两个属性的组合,只要其中一个属性在IIS服务器的所有SSL标识中具有唯一值,则IIS服务器认为此SSL标识是唯一的:
当网站
标识的HTTP标识和SSL标识(如果有)均是唯一的时,IIS才认为网站标识是唯一的。只有具有各自唯一的网站标识时,不同的Web站点才可以同时在IIS服务器上运行。如果发现Web站点无法启动并且提示端口被占用,那么你需要检查Web站点的网站标识是否是唯一的。
IIS服务器根据Web站点的网站标识路由客户端的访问请求到不同的Web站点,例如,如果某个Web站点的网站标识为:
-
IP地址为:10.1.1.9
-
HTTP端口:TCP 80
-
主机名头:无
那么客户只需要通过http://10.1.1.9就可以访问此Web站点。
而另外一个Web站点的网站标识为:
-
IP地址为:10.1.1.10
-
HTTP端口:TCP 88
-
主机名头:无
那么客户必须通过http://10.1.1.10:88才能访问此Web站点。
如果另外一个Web站点的网站标识为:
-
IP地址为:10.1.1.11
-
HTTP端口:TCP 80
-
主机名头:www.winsvr.org
客户端必须向IP 10.1.1.11提交主机名头www.winsvr.org才能访问此Web站点,如果只是通过http://10.1.1.11是无法访问的。
安装IIS时默认会创建一个名为默认网站的Web站点,你可以根据修改此站点的属性来迎合你的需求,也可以额外创建Web站点。
创建Web站点
你可以通过以下两种方式来创建Web站点:
使用网站创建向导创建Web站点
在IIS管理控制台中,右击网站,指向新建,选择网站,
在弹出的欢迎使用网站创建向导页,点击下一步;
在网站描述页,输入网站的描述,在此我输入为Winsvr.org,然后点击下一步,
在IP地址和端口设置页,设置此Web站点的网站标识(IP地址、端口和主机名头),在此仅能设置一个默认的HTTP标识,你可以在创建网站后添加其他的HTTP标识和SSL标识。由于IIS中的默认网站尚在运行,它的IP地址设置为全部未分配,端口为80,所以在此我必须不能设置为和默认站点冲突,因此我选择网站IP地址为10.1.1.9;保持端口为默认HTTP端口80,不输入主机名头,然后点击下一步;
在网站主目录页,输入主目录的路径,主目录即你的网站内容存放的目录,在此我输入为c:\winsvr,其实把网站主目录存放在系统分区不是安全的行为,只是在此我只有一个驱动器。默认选择了允许匿名访问网站,这允许对此网站的匿名访问,点击下一步;
在网站访问权限页,默认只是选择了读取,即只能读取静态内容,如果你需要运行脚本如ASP等,则勾选运行脚本(如ASP),至于其他权限,请根据需要慎重考虑后再选取;
最后在已成功完成网站创建向导页,点击完成,此时,Web站点就创建好了。
使用模板文件创建Web站点
除了使用向导以外,你还可以通过模板文件来创建Web站点。模板文件是保存的Web站点配置文件,它记录了保存的Web站点的所有属性,你可以通过读取它,然后创建Web站点,这适合需要创建多个相似配置的Web站点的场景。
首先你需要创建模板文件,在IIS管理器中右击需要作为模板的Web站点,在此我右击刚才创建的Web站点Winsvr.org,然后指向所有任务,选择将配置保存到一个文件,如果你右击网站然后再选择将配置保存到一个文件,那么会将IIS中的所有Web站点的配置保存到文件中;
然后在弹出的将配置保存到一个文件对话框上,输入保存的配置文件名,然后点击浏览按钮选择路径,如果需要加密则勾选用密码对配置进行加密,然后输入并确认密码,点击确定即可,此时此Web站点的所有配置均保存在此配置文件中。
现在我们右击Web站点Winsvr.org,选择删除,然后右击网站,指向新建,选择网站(来自文件),在弹出的导入配置对话框,点击浏览选择要导入的配置文件,然后在点击读文件,此时IIS读取配置文件中的配置,列出了其中包含的Web站点,选择对应的Web站点后,点击确定;此时,IIS将根据配置文件中的配置创建并启动对应的Web站点,如果和现有Web站点冲突,则此Web站点处于停止服务状态。
配置Web站点
在IIS管理控制台中右击对应的Web站点,然后选择属性,即可配置Web站点的属性,在此我仅介绍一下常用的几个配置标签:
网站
在网站标签,你可以在网站标识框修改此网站的默认HTTP标识,也可以点击高级按钮添加其他的HTTP标识和SSL标识;在连接框,你可以配置Web站点在客户端空闲多久时断开与客户端的连接,而保持HTTP连接选项有助于HTTP连接性能的提高,你应该总是启用;最后在下部你可以配置是否启用日志记录以及日志记录文件的存储路径和记录的字段。
性能
在性能标签,你可以限制网站可以使用的网络带宽和并发连接数,如果启用限制网络带宽,则勾选限制网站可以使用的网络带宽,然后输入此网站可以使用的最大带宽即可,不过IIS需要在网络适配器上安装QoS数据包计划程序;默认情况下此Web站点的并发连接数不受限制,你可以限制它可以使用的并发连接数,但是配置时请注意,设置值不应超过应用程序池所设置的核心请求队列长度。
主目录
在主目录标签,主要可以进行以下配置:
修改网站的主目录:配置为本地目录、共享目录或者重定向到其他URL地址;
修改网站访问权限:网站访问权限用于控制用户对网站的访问,IIS 6中具有以下六种网站访问权限,:
-
读取:用户和读取文件内容和属性,默认启用;
-
写入:用户可以修改目录或文件的内容;如果需要启用此权限,请在设置之前慎重考虑。
-
脚本资源访问:允许用户访问脚本文件的源代码,必须和读取或写入权限同时启用方可生效;如果需要启用此权限,请在设置之前慎重考虑。
-
目录浏览:用户可以浏览目录,从而可以看到目录中的所有文件;如果需要启用此权限,请在设置之前慎重考虑。
-
记录访问:当用户浏览此网站时进行日志记录,默认启用。
-
索引资源:允许索引服务对此资源进行索引,默认启用。
需要注意的是,网站访问权限只是完整的用户访问控制体系结构中的一部分,我将在后文介绍IIS完整的用户访问控制体系。
执行权限:执行权限用于控制此网站的程序执行级别,IIS 6中具有以下三种执行权限:
应用程序池:配置此网站所使用的应用程序池;
此外,点击配置可以进入应用程序配置对话框,如下图所示:
在映射标签中,你可以配置应用程序映射,即配置由哪个Web服务扩展来处理具有对应扩展名的文件,IIS默认安装的Web服务扩展如ASP等已经自动添加了应用程序映射,因此你只需要在Web服务扩展中启用;默认情况下勾选了缓存ISAPI扩展,这样以ISAPI方式运行的Web服务扩展可以在被用户请求激活后长驻内存,从而减少加载DLL的时间,否则DLL将在运行之后被卸载。你应该只有在特别需要的环境下时才取消此选项,例如调试ISAPI扩展。
在选项标签有个比较重要的选项,就是启用父路径。父路径指使用“..”相对表示当前路径的父路径的方式,由于具有安全隐患,在IIS 6中是默认禁用的,如果你的程序需要使用,则勾选此选项,不过,在启用之前,你应该检查你的应用程序,以确定不会引起安全问题。
在调试标签,同样也具有一个比较重要的选项:脚本错误的错误消息。默认情况下当脚本执行错误时,Web站点会向客户发送详细的ASP错误信息,这点有助于Web应用程序的开发;但是在正常的网站运行中,此选项也便于入侵者获取信息,因此建议你在正常的网站运行中,设置为向客户端发送下列文本错误消息,然后输入自定义的错误消息。
文档
在文档标签,你可以配置此网站使用的默认内容文档。默认内容文档指如果客户请求时并未指定请求的具体文件名时,例如客户访问http://www.winsvr.org/,那么按照在此配置的优先级(从上到下)在对应目录下进行搜索直到找到匹配的文件为止,然后将找到的默认内容文档返回给客户。由于搜索需要耗费系统性能和降低响应时间,因此你最好确认指定的第一个默认内容文档即存在于网站主目录中。你可以添加和删除默认内容文档,也可以选择对应名字后点击上移、下移调整优先级。
下部的启用文档页脚功能可以让Web站点自动附件一个HTML格式的页脚到返回给客户的任何一个文档中,不过你选择的页脚文件不应是完整的HTML文件,而应仅仅是部分HTML代码。
目录安全性
在目录安全性标签,你可以配置身份验证和访问控制、IP地址和域名限制、安全通信等,
身份验证和访问控制:点击编辑弹出身份验证方法对话框,IIS 6支持五种身份验证方式,在此我仅介绍常用的三种:
-
匿名访问:注意此匿名访问和Windows中的匿名访问概念不同。在启用匿名访问时,当客户访问此Web站点时,Web站点会使用预配置的用户账户代替客户进行身份验证,而不需要客户输入身份验证信息。在安装IIS时,会创建一个名为IUSR_服务器名的用户账户,它属于Guests用户组,具有很少的访问权限。默认情况下在启用匿名访问时,IIS使用此用户账户来代替客户进行身份验证;不过为了实现更高的安全性和隔离性,你可以配置为使用自定义的用户账户。但是无论配置为使用任何账户,你都必须确定此账户具有对网站主目录的相应NTFS权限,否则客户的访问将会被拒绝。
-
基本身份验证:基本身份验证是广泛使用的工业标准身份验证方式,它访问时要求用户显式输入身份验证信息,然后通过BASE64编码传送至Web服务器,由于没有进行加密,如果数据包被其他人捕获则会造成身份验证信息的泄漏,因此建议你在SSL上使用基本身份验证。
-
集成Windows身份验证:集成Windows 身份验证在通过网络发送用户名和密码之前,先将它们进行哈希计算,因此更为安全,它在Windows系统中广泛使用。但是非Windows系统可能不支持集成身份验证,并且不能通过代理使用集成身份验证。
IP地址和域名限制:点击编辑弹出IP地址和域名限制对话框,在此你可以限制可以访问此Web站点的IP地址范围,你可以仅允许你所添加的IP地址范围的访问,也可以允许除了所添加的IP地址范围外的其他IP地址范围的访问。
安全通信:在安全通信中你可以配置Web站点和客户端之间是否启用安全通信,我将在另行撰文介绍。
配置上传文件限制
默认情况下,在IIS 6 全局配置中允许上传的文件长度最大为4 GB,但是在Web站点级却限制了ASP应用程序上传的最大文件长度为200 KB。如果你需要上传超过200KB的文件,则需要手动修改IIS的metabase.xml中对应Web站点的AspMaxRequestEntityAllowed属性。
metabase.xml位于"systemroot"\system32\inetsrv目录下,用于保存IIS的基本配置信息。默认情况下IIS是不允许你直接对metabase.xml进行编辑的,你可以通过以下两种方式来实现:
然后在任何文本编辑器中打开Metabase.xml文件,修改对应Web站点的AspMaxRequestEntityAllowed属性即可,它的单位是字节。
Metabase.xml对于IIS至关重要,修改之前最好进行备份
。
IIS 6 中的用户访问控制体系
在上面中给大家介绍了Web站点中的配置,可以看到具有网站访问权限、身份验证和访问控制、IP地址和域名限制等配置,它们都只是IIS 6中用户访问控制体系的一部分。IIS 6中的用户访问控制体系是和Windows系统紧密结合的,当IIS服务器接收到客户所发送的访问请求时,它按照以下步骤进行处理:
-
IIS检查是否具有匹配客户访问请求的Web站点;如果没有则返回给客户400-错误请求错误信息;
-
IIS检查客户的IP地址是否在Web站点所允许访问的IP地址范围内;如果被拒绝则IIS拒绝客户访问并返回给客户403.6-禁止访问错误信息;
-
如果Web站点配置为使用除匿名验证的其他验证方式,则提示客户提交身份验证信息,如果客户提交的身份验证信息未能通过IIS服务器的身份验证,则IIS拒绝客户访问并返回给客户401.1-未经授权错误信息;
-
IIS检查网站访问权限,如果不具有相应的网站访问权限,则IIS拒绝客户访问并返回给客户403.2-禁止访问错误信息;
-
此时,工作进程模拟客户提交的用户账户或者使用配置为匿名访问时预定义的用户账户来访问网站主目录对应路径下的资源文件,如果此资源文件存放在NTFS格式的驱动器上,则Windows系统检查该资源文件的NTFS权限,如果工作进程模拟的用户账户不具有相应的权限,则工作进程访问被系统拒绝,此时IIS返回给客户401.3-未经授权错误信息。如果资源文件存放在FAT32格式的驱动器上则不会进行检查,因此强烈建议大家使用NTFS格式的驱动器并且将网站内容存放在除系统分区外的其他驱动器上,然后使用NTFS权限加以严格限制,这样可以带来更高的安全性。
关于IIS 6安装时的默认权限,可以参考微软的知识库文档“KB812614,Default permissions and user rights for IIS 6.0”。在使用ASP.NET时,默认情况下不会进行用户账户的模拟,因此,所有运行ASP.NET的Web 应用程序访问任何资源访问均使用ASP.NET进程所运行的用户账户,如果你需要创建自定义帐户来运行ASP.NET,请参考微软技术文章如何创建自定义帐户来运行 ASP.NET。