我总是被多个网站共享同一个IP地址的想法弄糊涂了。我的意思是如果有一个有IP地址的网络服务器。我只需使用正确的端口(例如80 )输入这个IP地址,目标网关就知道要转发这个传入请求的服务器。这种情况下,端口80是out服务器,网站被送达客户端。
然而,我不明白如何两个网站可以托管在网络服务器和一个IP地址。假设两个名为abc.com和xyz.com的网站托管在同一个Let服务器上,只有一个IP地址。我使用的DNS服务器(如我的ISP的DNS服务器)可以很好地解析IP地址的名称,将我的web浏览器指向正确的web服务器,但我的困惑是,web服务器如何知道服务于哪个网站?
我一直认为在同一台way服务器上区分不同网站的唯一方法是它们各自的端口号。换句话说,如果传入请求位于端口80,则为abc.com,如果是端口81,则为xyz.com。显然,我没有把xyz.com:81放在我的网页浏览器上,所以它默认使用端口80。那么,为什么我得到的是实际的xyz.com网站而不是abc.com呢?
发布于 2014-03-29 13:03:24
web服务器软件查看HTTP请求中的主机名,并使用它来确定要服务的网站。例如,Apache有控制这种行为的NameVirtualHost
配置选项。您可以在其文档中找到有关此过程如何工作的详细说明:https://httpd.apache.org/docs/2.2/vhosts/name-based.html。
发布于 2014-03-30 09:06:01
Host: example.com
头,此时服务器知道此请求的正确网站,并根据相应的主机设置执行请求……无论是nginx中的服务器块,还是apache中的虚拟主机定义。发布于 2014-03-30 13:42:05
在不详细讨论实际机制的情况下,基本上将abc.com和xyz.com域解析为两个域共享的一个IP地址的DNS服务器将该共享IP地址返回给web浏览器。然后,web浏览器向这个IP地址发出HTTP请求,并最终到达承载这两个(也许还有更多)站点的web服务器。此外,由于这是一个HTTP请求,因此在此请求到达when服务器时,除了IP地址之外还有其他信息,即具有实际名称abc.com或xyz.com或此单个when服务器所承载的其他域的头数据包。使用这个HTTP报头包,out服务器确切地知道要为哪个网站服务。HTTP封装除了IP地址之外还包含一些ASCII文本信息的数据包。
https://webmasters.stackexchange.com/questions/60061
复制