【问题标题】:Can server host different domain in same port?服务器可以在同一个端口托管不同的域吗?
【发布时间】:2021-07-29 13:44:53
【问题描述】:
我正在尝试了解如何在服务器中托管不同的应用程序,以便服务器可以在同一端口中托管不同的域。
例如,我的 domain1 和 domain2 都托管在端口 443。可以这样做吗?
我在 IIS 服务器中执行此操作。
【问题讨论】:
标签:
web-services
iis
server
【解决方案1】:
单个 Web IIS 服务器可以在同一端口托管不同的域。然而,为了 IIS 正确分发 HTTP 请求,每个网站都必须用一些唯一值来标识。对于 IIS 网站,它由三个属性组成,这些属性构成每个网站的唯一组合。它们是:
- 一个 TCP 端口号
- IP 地址
- 主机头(主机名)
有关托管网站的信息以以下格式存储在 IIS 元数据库的 ServerBindings 属性中:IP:Port:Hostname。因此,如果您想在同一端口和 IP 地址上托管多个网站,则必须使用唯一的 Host 标头。它是什么?主机标头是客户端向服务器发送的 HTTP 请求的一部分,该请求指定它的地址是哪个网站。因此,必须在 Web 服务器端指定此主机标头,并且 DNS 包含与 IIS Web 服务器的主机名和 IP 地址匹配的正确记录。
假设您有一个在 IIS 上运行的网站并监听 443 端口。您需要将第二个网站绑定到同一个端口。在 IIS 管理器中,创建另一个名为 TestSite 的网站,这些文件将位于 c:\inetpub\TestSite 中(不要指定主机名)。单击“确定”后,将出现一条警告,提示您不能对两个站点使用绑定 *:443。
The binding '*:443:' 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?
同意这个警告。因此,您有另一个站点绑定到端口 443,如果不停止第一个站点,您将无法启动它。