究竟什么是“默认网站”?

osc*_*tin 10 iis iis-6 iis-7.5

在 IIS 6 和 IIS 7.5(以及 6 之前的版本,我敢肯定)之间,站点下有默认网站。我从未真正质疑过“默认网站”究竟意味着什么。似乎这里的惯例是将您的所有网站都放在默认网站下,所以当您将其他网站放在默认网站下时,这让我怀疑什么是“默认”。默认网站的目的是保存需要被其下的所有网站继承的默认配置还是有其他用途?换句话说,我什么时候想要将我的新网站添加到 Sites 文件夹而不是默认网站。

仅供参考,我正在将 IIS 6 网站迁移到新服务器,并将继续使用 IIS 7.5,所以这个问题主要适用于 IIS 7.5。

在此处输入图片说明

har*_*ymc 14

顾名思义,默认网站是一个在安装 IIS 时创建的便利网站。它可以被新网站删除和替换,但它的优点是它可以“开箱即用”,并且已经处理了所有定义和权限。创建新网站时,正确获取文件夹和文件权限可能是最令人头疼的问题。

这是默认网站的属性截图:

默认属性

上面的重要属性是:

应用程序池:每个这样的池只不过是 w3wp.exe 的一个实例,每个池一个(IIS 将在重负载下启动多个)。它在名为 DefaultAppPool 的用户帐户下在此处运行,该帐户已被授予对网站文件夹的最低要求权限。

物理路径:这是包含网站所有文件的文件夹(虚拟文件夹中的文件除外)。默认为C:\inetpub\wwwroot

Bindings : 重要的是http:*.80,意思是 80 端口上的 HTTP 协议。其他的用于处理 WCF 服务,取决于你的 Windows 配置。需要注意的是,端口 80 不能分配给另一个站点,只要它分配给这个站点。条目的完整语法是 protocol/IP_address:port:host_header,其中未指定的项目表示“所有”,因此该默认值表示“所有 IP 地址、域名和主机”。

这是如何工作的

IIS 在所有指定端口上侦听使用通用格式 URL 的请求:

protocol://[username:password@]domain[:port]/path/file[?parameters]
Run Code Online (Sandbox Code Playgroud)

然后将请求转发到处理协议、域和端口的指定组合的(一个)站点。未指定的元素有它们的默认值,或者浏览器在某些情况下可能会要求缺少元素,例如用户名和密码。

路径(如果指定)通常以纯文本方式附加到物理路径。例如,http://domain/path/file默认网站的 URL被转换为C:\inetpub\wwwroot\path\file. 如果路径名以指向另一个文件夹的虚拟目录的名称开头,例如D:\myWWWroot,文件夹路径的前面部分将被替换,因此文件规范将变为D:\myWWWroot\remainder-of-path\file.

为什么存在默认网站

它存在的原因很简单,因为在 IIS 中从头开始创建网站时需要处理的细节太多。

我已经谈到了文件和文件夹权限,这是当人们可以发誓指定文件存在时,可能会收到臭名昭著的“HTTP 错误 404.0 - 未找到”消息的主要原因。当应用程序池的用户帐户缺少对生成的物理路径中某个文件夹的权限时,就会出现这种情况。

默认网站接管并将所有通过端口 80 到达的 HTTP 请求响应分配给安装它的计算机的所有 IP 地址,将所有 HTTP URL 转换为C:\inetpub\wwwroot.

从默认网站开始,根据需要修改其属性要容易得多,而不是从头开始创建所有内容,尤其是在对 IIS 7+ 几乎没有经验的情况下。所有必需的用户帐户和权限C:\inetpub 都是预定义的,这一事实可以防止很多困惑的头疼。

这对于安全也很重要,因为默认情况下 IIS 对黑客攻击是无懈可击的。当不小心修改默认值或添加易受攻击的附加产品时,就会产生漏洞。