规划以主机命名的网站集 (SharePoint Server 2010)

 

适用于: SharePoint Foundation 2013, SharePoint Server 2013

上一次修改主题: 2016-11-30

本文内容:

  • 关于以主机命名的网站集

  • 关于主机标头

  • 创建以主机命名的网站集

  • 以编程方式创建以主机命名的网站集

  • 将托管路径用于以主机命名的网站集

  • 通过 HTTP 或 SSL 公开以主机命名的网站

  • 为以主机命名的网站集配置 SSL

  • 将以主机命名的网站集与外部 SSL 终止结合使用

Microsoft SharePoint Server 2010 同时支持基于路径的网站集和以主机命名的网站集。基于路径的网站集和以主机命名的网站集之间的主要区别是,Web 应用程序中所有基于路径的网站集都共享同一主机名(DNS 名称),而 Web 应用程序中每个以主机命名的网站集都分配有唯一的 DNS 名称。

基于路径的网站集提供一个企业宿主解决方案,其中所有网站集都共享 Web 应用程序的同一主机名。在基于路径的部署中,可以在 Web 应用程序的根目录下包含一个网站集,在 Web 应用程序内的托管路径下包含其他网站集。

以主机命名的网站集提供一个可扩展的 Web 宿主解决方案,其中每个网站集都分配有唯一的 DNS 名称。在 Web 宿主部署中,每个以主机命名的网站集都有其各自的虚拟主机名 URL,例如 http://customer1.contoso.com、http://customer2.contoso.com 或 http://www.customer3.com。

SharePoint Server 2010 对以主机命名的网站集提供了两项重要改进:将托管路径用于以主机命名的网站集的功能,以及将外部 SSL 终止用于以主机命名的网站集的功能。

关于以主机命名的网站集

Web 主机托管服务提供商为客户提供 Web 服务器空间来承载其各自的网站。在基于路径的 SharePoint Server 2010 环境中,这些网站通常会分配给 https://www.contoso.com/sites/customer1、https://www.contoso.com/sites/customer2 等地址。但是,Web 托管客户通常希望使其网站可在虚拟域名中使用,例如 http://customer1.contoso.com、http://customer2.contoso.com 等。

支持此客户请求的一种方式是为每个客户提供其各自的 Web 应用程序,并将客户的唯一 DNS 名称分配给 Web 应用程序。但是,SharePoint Server 2010 Web 应用程序的扩展性不如 SharePoint Server 2010 网站集。SharePoint Server 2010 支持使用以主机命名的网站集,以代替为每个客户创建单个 Web 应用程序。以主机命名的网站集可以扩展为数千个网站集,因为它们可以全部位于一个 Web 应用程序中,并且仍提供命名功能。

由于以主机命名的网站集具有单个 URL,因此它们不支持备用访问映射,并且通常被认为位于默认区域中。如果需要支持网站集响应多个主机名 URL,请考虑使用具有备用访问映射的基于路径的网站集,而不是以主机命名的网站集。在设置新的 SharePoint Server 2010 网站时,需要考虑若干其他配置选项。通过在网站创建过程中指定相应的网站模板,可以确定哪些预配置 Web 部件和其他用户界面元素在新网站上可用。在宿主方案中,您可能希望选择工作组网站模板(创建网站时的“STS#0”值)或不包含任何 Web 部件或预建列表的空网站(“STS#1”值)。还要考虑在每个新设置的网站集上指定网站配额。

关于主机标头

主机标头是 HTTP 协议的一部分,用来告知 Web 服务器客户端所连接网站的 DNS 名称。可以在 SharePoint Server 2010 中的两个不同级别应用主机标头:

  • Web 应用程序(IIS 网站)级别

  • 网站集级别

了解这两个级别的差别很重要。IIS 网站级别的主机标头仅适用于基于路径的网站集。网站集级别的主机标头仅适用于以主机命名的网站集。大多数情况下,如果在 IIS 网站级别应用主机标头绑定,则无法通过 IIS 网站访问以主机命名的网站集。这是因为 IIS 不会响应与主机标头绑定不同的主机名请求。

基于路径的网站集和以主机命名的网站集可以共存于同一 Web 应用程序中,也可以位于多个 Web 应用程序中。如果 Web 应用程序中具有以主机命名的网站集,若要确保两种类型的网站集都可供用户访问,请不要将主机标头绑定放在分配给该 Web 应用程序默认区域的 IIS 网站上。可以将主机标头绑定应用于位于 Web 应用程序的其他区域中的 IIS 网站。这样,您就可以对以主机命名的网站集使用默认区域,同时还可以在其他区域中对基于路径的网站集使用备用访问映射功能。

您可以从 IIS 管理器手动修改 IIS 网站上的主机标头绑定,但不建议这样做。使用 IIS 管理器进行的任何更改不会记录在 SharePoint Server 2010 中。如果 SharePoint Server 2010 尝试在同一 Web 应用程序和区域的服务器场的另一台计算机上设置 IIS 网站,则会使用原始主机标头绑定,而不是经过修改的绑定。如果要修改 IIS 网站的现有绑定,请从该区域中移除 Web 应用程序,然后通过要使用的绑定将 Web 应用程序重新扩展到该区域中。

创建以主机命名的网站集

必须使用 Windows PowerShell 创建以主机命名的网站集。不能使用 SharePoint Server 2010 管理中心 Web 应用程序创建以主机命名的网站集,但在创建网站集后可以使用管理中心管理它。

可以使用带 -HostHeaderWebApplication 参数的 Windows PowerShell New-SPSite cmdlet 创建以主机命名的网站集,如下面的示例所示:

  1. 若要使用 Windows PowerShell 创建以主机命名的网站集,请验证您满足以下最低要求:请参阅 Add-SPShellAdmin

  2. 在“开始”菜单上,单击“所有程序”。

  3. 单击“Microsoft SharePoint 2010 产品”。

  4. 单击“SharePoint 2010 Management Shell”。

  5. 从 Windows PowerShell 命令提示符(即 PS C:\>)处,键入以下命令:

New-SPSite http://host.header.site.url -OwnerAlias DOMAIN\username - 
HostHeaderWebApplication https://servername

这将在 SharePoint Server 2010 Web 应用程序(URL 为 https://servername)中创建以主机命名的网站集(URL 为 http://host.header.site.url)。

以编程方式创建以主机命名的网站集

除了使用 Windows PowerShell 创建以主机命名的网站之外,还可以使用 SharePoint Server 2010 对象模型。以下代码示例在 SharePoint Server 2010 Web 应用程序(URL 为 https://servername)中创建以主机命名的网站集(URL 为 http://host.header.site.url):

SPWebApplication webApp = SPWebApplication.Lookup(new
Uri("https://www.contoso.com"));
SPSiteCollection sites = webApp.Sites;
SPSite Site = null;
Site = sites.Add("http://hoster.contoso.com", "Site_Title",
"Site_Description", 1033, "STS#0", "contoso\owner",
"Owner_Display_Name", "Owner_Email", "contoso\secondaryowner,
"Secondary_Owner_Display_Name", "Secondary_Owner_Email", true);

SharePoint Server 2010 提供了一组针对各种用户和管理任务的 Web 服务。其中一项管理任务是创建新网站集,但 CreateSite Web 服务方法不支持创建以主机命名的网站集。此问题的解决方法是编写一个 Web 服务以包装 API 示例代码。

将托管路径用于以主机命名的网站集

SharePoint Server 2010 添加了对以主机命名的网站集的托管路径的支持。主机托管服务提供商可以为同一客户提供多个网站集,其中每个网站集都共享该客户的唯一主机名,但通过主机名后面的 URL 路径加以区分。

以主机命名的网站集的托管路径不同于基于路径的网站集的托管路径。以主机命名的网站集的托管路径不适用于基于路径的网站集;基于路径的网站集的托管路径也不适用于以主机命名的网站集。为以主机命名的网站集创建的托管路径可用于服务器场内所有以主机命名的网站集,而不考虑以主机命名的网站集位于哪个 Web 应用程序中。在为主机名创建托管路径以供以主机命名的网站集使用之前,必须为该主机名创建以主机命名的根网站集。

可通过带 -HostHeader 参数的 Windows PowerShell New-SPManagedPath cmdlet 创建供以主机命名的网站集使用的托管路径,如下面的示例所示:

New-SPManagedPath pathname -HostHeader

下面的示例显示了在托管路径中创建的以主机命名的网站集:

New-SPSite http://host.header.site.url/pathname/sitename -OwnerAlias DOMAIN\username -HostHeaderWebApplication https://servername

通过 HTTP 或 SSL 公开以主机命名的网站

以主机命名的网站集将与其 Web 应用程序默认区域中的公用 URL 使用相同的协议方案。如果希望通过 HTTP 在 Web 应用程序中提供以主机命名的网站集,请确保 Web 应用程序默认区域中的公用 URL 是基于 HTTP 的 URL。如果希望通过 SSL 在 Web 应用程序中提供以主机命名的网站集,请确保 Web 应用程序默认区域中的公用 URL 是基于 HTTPS 的 URL。

与早期版本不同,SharePoint Server 2010 不支持同时使用基于 HTTP 和基于 SSL 的 URL 的以主机命名的网站集。如果需要通过 HTTP 访问某些以主机命名的网站集,同时需要通过 SSL 访问其他以主机命名的网站集,请将这些以主机命名的网站集分别置于两个专门用于该访问类型的不同 Web 应用程序中。在此方案中,以主机命名的 HTTP 网站集应位于专门用于 HTTP 访问的 Web 应用程序中,以主机命名的 SSL 网站集应位于专门用于 SSL 访问的 Web 应用程序中。

为以主机命名的网站集配置 SSL

在宿主方案中,主机托管服务提供商可以使用 SSL 配置单个 Web 应用程序,然后在该 Web 应用程序中创建多个以主机命名的网站集。若要通过 SSL 浏览到网站,必须安装服务器证书并将其分配给 IIS 网站。Web 应用程序中每个以主机命名的网站集将共享分配给 IIS 网站的单个服务器证书。

主机托管服务提供商需要获取通配符证书或使用者替换名称证书,然后使用与该证书匹配的以主机命名的网站集 URL 策略。例如,如果主机托管服务提供商获取一个 *.contoso.com 通配符证书,则该主机托管服务提供商必须生成以主机命名的网站集 URL,例如 https://site1.contoso.com、https://site2.contoso.com 等,以使这些网站通过浏览器 SSL 验证。但是,如果客户要求其网站具有唯一的第二层域名,则主机托管服务提供商必须创建多个 Web 应用程序,而不是多个以主机命名的网站集。

若要为以主机命名的网站集配置 SSL,请在创建 Web 应用程序时启用 SSL。这将使用 SSL 绑定而非 HTTP 绑定创建 IIS 网站。创建 Web 应用程序后,打开 IIS 管理器并为该 SSL 绑定分配证书。然后即可在该 Web 应用程序中创建网站集。

将以主机命名的网站集与外部 SSL 终止结合使用

由于 SharePoint Server 2010 使用 Web 应用程序默认区域中的公用 URL 来确定是以 HTTP 还是 SSL 形式呈现以主机命名的网站集,因此现在您可以将以主机命名的网站集与外部 SSL 终止结合使用。将以主机命名的网站集与 SSL 终止结合使用有 3 个要求:

  • Web 应用程序默认区域中的公用 URL 必须是基于 HTTPS 的 URL。

  • SSL 终结器或反向代理必须保留客户端的原始 HTTP 主机标头。

  • 如果将客户端 SSL 请求发送到默认 SSL 端口 (443),则 SSL 终结器或反向代理必须将解密的 HTTP 请求转发到默认 HTTP 端口 (80) 上的前端 Web 服务器。如果将客户端 SSL 请求发送到非默认的 SSL 端口,则 SSL 终结器或反向代理必须将解密的 HTTP 请求转发到同一非默认端口上的前端 Web 服务器。

若要将以主机命名的网站集与外部 SSL 终止结合使用,请像平常配置 SSL 终止那样配置 Web 应用程序,并确保它满足上述要求。在此方案中,SharePoint Server 2010 将使用 HTTPS 而非 HTTP 呈现该 Web 应用程序中以主机命名的网站集的链接。