当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在同一端口或 IP 地址上运行多个 IIS 网站

作者:精品下载站 日期:2024-12-15 00:44:28 浏览:15 分类:玩电脑

在同一端口或 IP 地址上运行多个 IIS 网站


当您在 Windows 上安装 Internet 信息服务 (IIS) 时,默认情况下会创建一个空的“默认网站”并侦听标准 Web HTTP 端口 - TCP 80。在 IIS 术语中,这意味着该站点绑定到端口 TCP/80。要打开此站点,只需输入 IIS 服务器的名称(

“http://web-srv1”

)或其IP地址(

“http://192.168.1.100”

)在您的浏览器中。单个 IIS Web 服务器可以为数十个和数百个网站提供服务,并且您可以在其上运行多个网站,在同一 TCP 端口(80、443 或其他端口)上侦听和响应。然而,IIS 管理器的界面并没有表明您可以托管另一个网站而不将其绑定到其他端口(例如 8080)。在本文中,我们将展示如何在同一 IIS 服务器上托管多个网站并将它们绑定到相同的端口和 IP 地址或不同的 IP 地址。

[玩转系统] 在同一端口或 IP 地址上运行多个 IIS 网站

IIS 网站绑定

在 Windows Server 上运行的单个 Web IIS 服务器可以托管多个网站。但是,为了 IIS 正确分发 HTTP 请求,每个网站都必须用一些唯一的值进行标识。对于 IIS 网站,它由三个属性组成,这三个属性构成每个网站的唯一组合。这些都是:

  • TCP 端口号

  • 一个IP地址

  • 主机头(主机名)

有关托管网站的信息按以下格式存储在 IIS 元数据库的 ServerBindings 属性中:

IP:Port:Hostname

。因此,如果您想在同一端口和 IP 地址上托管多个网站,则必须使用唯一的主机标头。它是什么?主机标头是客户端向服务器发送的 HTTP 请求的一部分,指定其要发送到哪个网站。因此,必须在 Web 服务器端指定此主机标头,并且 DNS 包含与 IIS Web 服务器的主机名和 IP 地址相匹配的正确记录。

假设您有一个在 IIS 上运行并侦听 80 端口的网站。并且您需要将第二个网站绑定到同一端口。

在 IIS 管理器中,创建另一个名为 TestSite 的网站(添加网站),该文件将位于 c:\inetpub\TestSite 中(尚未指定主机名)。

[玩转系统] 在同一端口或 IP 地址上运行多个 IIS 网站

单击“确定”后,会出现一条警告,提示您不能对两个站点使用绑定 *:80

Add Website
The binding '*:80:' is assigned to another site. If you assign the same binding to this site, you will only be able to start one of the sites. Are you sure that you want to add this duplicate binding?

[玩转系统] 在同一端口或 IP 地址上运行多个 IIS 网站

同意此警告。因此,您已经将另一个站点绑定到端口 80,如果不停止第一个站点,则无法启动它。

[玩转系统] 在同一端口或 IP 地址上运行多个 IIS 网站

使用主机标头在 IIS 上托管多个网站

要创建唯一的绑定,请为第二个 IIS 网站指定另一个名称(主机名)。右键单击TestSite并选择编辑绑定。选择您需要的绑定,然后单击编辑

主机名称字段中指定用户将寻址到的唯一主机名,例如 TestSite。

[玩转系统] 在同一端口或 IP 地址上运行多个 IIS 网站

您可以使用命令提示符配置 IIS 站点绑定。在这种情况下,对于 IIS 7 或更高版本,配置绑定的命令如下所示:

C:\Windows\System32\inetsrv\appcmd.exe set site /site.name:testsite /+bindings.[protocol='http',bindingInformation='*:80:testsite']

现在您也可以启动第二个网站。

[玩转系统] 在同一端口或 IP 地址上运行多个 IIS 网站

您所要做的就是为服务器添加 DNS 别名(A 或 CNAME),以指向 IIS Web 服务器的 IP 地址或主机名。如果您使用的是 Active Directory 域,则需要在域控制器上创建 DNS 记录。

您可以在 DNS 控制台中为名称 testsite 创建 CNAME 记录 (

dnsmgmt.msc

)并将 IIS 服务器的域名指定为 FQDN 目标主机。

[玩转系统] 在同一端口或 IP 地址上运行多个 IIS 网站

此 DNS 记录也可以使用 PowerShell 创建:

Add-DnsServerResourceRecordCName -HostNameAlias web-srv1.a-d.site -Name testsite -ZoneName a-d.site

尝试打开

http://TestSite

在您的浏览器中。它应该成功打开。

[玩转系统] 在同一端口或 IP 地址上运行多个 IIS 网站

这里有一些值得一提的有用注释。

如果您使用独立的 IIS 服务器,则站点名称到服务器 IP 地址的映射是通过文件完成的

C:\Windows\system32\drivers\etc\hosts

绑定设置存储在 IIS 配置文件的 IIS 配置文件 部分中

C:\Windows\System32\inetsrv\config\applicationHost.config

在我们的例子中,此部分包含以下数据:

<sites>
<site name="Default Web Site" id="1">
<application path="/">
<virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:" />
</bindings>
</site>
<site name="TestSite" id="2" serverAutoStart="true">
<application path="/" applicationPool="TestSite">
<virtualDirectory path="/" physicalPath="C:\inetpub\TestSite" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:TestSite" />
</bindings>
</site>
<siteDefaults>
<logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" />
<traceFailedRequestsLogging directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" />
</siteDefaults>
<applicationDefaults applicationPool="DefaultAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>

同样,您可以在 IIS Web 服务器的同一端口上托管和运行数百个站点。

在 IIS 上运行具有不同 IP 地址的多个站点

现在让我们尝试在 IIS Web 服务器上以不同的 IP 地址运行两个站点。首先,您需要在 Windows Server 上添加单独的 VLAN 接口,或者简单地为您的 NIC 分配一个额外的 IP 地址(别名)。

在此示例中,服务器的主 IP 地址为 192.168.13.100,我将向同一网络适配器添加一个额外的 IP 别名 192.168.13.101:

Get-NetIPAddress | ft IPAddress, InterfaceAlias, SkipAsSource
New-NetIPAddress -IPAddress 192.168.13.101 -PrefixLength 24 -InterfaceAlias “Ethernet” -SkipAsSource $True

现在您需要在 DNS 服务器上为新站点创建一条 A 记录(我们将使用 -CreatePtr 选项在反向区域中另外创建一条 PTR 记录):

Add-DnsServerResourceRecordA -Name NewSite3 -IPv4Address 192.168.13.101 -ZoneName a-d.site -TimeToLive 01:00:00 -CreatePtr

仍然需要打开站点绑定设置并将站点绑定到主机的附加 IP 地址。

使用 PowerShell 管理 IIS 站点绑定

您可以使用 PowerShell 管理 IIS 服务器上的站点绑定。为此,使用 WebAdministration 模块:

Import-Module WebAdministration

显示有关所有可用 IIS 站点及其绑定的信息:

Get-IISSite

或者关于单个站点:

(Get-Website -Name NewSite).bindings.Collection
protocol bindingInformation sslFlags
-------- ------------------ --------
http 192.168.13.101:80:NewSite3 0

要更改此站点的绑定(您可以更改IP地址、端口或名称):

Set-WebBinding -Name NewSite1 -BindingInformation "192.168.13.101:80:NewSite1" -PropertyName 'Port' -Value '8080'
Set-WebBinding -Name NewSite1 -BindingInformation "192.168.13.101:8080:NewSite1" -PropertyName 'IPAddress' -Value '192.168.13.100'

要将新绑定添加到特定 IIS 站点,请运行:

New-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:" -Protocol http

要删除绑定:

Remove-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:"

因此,您可以在 IIS Web 服务器上在不同的 IP 地址以及相同的 IP 地址和 TCP 端口号上运行多个站点。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯