我怎么能拥有一个IP地址在互联网上,但许多networking名称? 例如,托pipe公司拥有共享的IP,但我可以获得无限的域名(以及其他所有人)。
我在互联网上有一个盒子,但我想指向另一台机器,当有人input不同的网站时,它拥有不同的网站…(它坐在旁边,只是在不同的盒子里)。 这是所有subdomaining? 谢谢。
我是托pipe公司
它是HTTP 1.1协议的一部分。
具体来说,HTTP 1.1协议包含一个名为“host:”的头文件,该头文件指定客户端正尝试访问的特定服务器上的哪个网站。
所以,如果snoopy.net和woodstock.org共享192.0.32.10,并且您的浏览器试图从http://snoopy.net/doghouse
获取内容,那么具体的http请求将如下所示:
GET /doghouse HTTP/1.1 Host: snoopy.net
如果所需的url是http://woodstock.org/seeds
,请求将如下所示
GET /seeds HTTP/1.1 Host: woodstock.org
在这两种情况下,您的计算机和服务器的端口80之间都会有一个tcp套接字。 服务器将知道从/var/www/snoopy.net或/var/www/woodstock.org/获取内容,基于主机头。
会有其他的cookie和其他东西,如浏览器types和允许的内容,但“主机”头特别是什么让networking服务器知道哪个虚拟网站是所需的。
还有更多的RFC2616 。
这也是为什么https站点必须拥有自己的IP地址 – ssl密钥交换和证书validation发生在http事务之前,因此http服务器将不知道发出“woodstock”证书。当它在192.0.32.10的端口443上接收到一个https连接时,它将被发送到“org”或“snoopy.net”。
编辑
** Grawity指出,TLS规范中有SSL的扩展,允许服务器知道用户试图访问哪个站点,而且大多数现代Web浏览器都有这些扩展,所以必须有点过分强大。
所有现代浏览器都会发送一些东西,叫做“Host:”Header。
firefox为这个页面发送的实际请求是:
主机:superuser.com User-Agent:Mozilla / 5.0(Windows; U; Windows NT 6.0; en-US; rv:1.9.1.7)Gecko / 20091221 Firefox / 3.5.7(.NET CLR 3.5.30729) 接受:text / html,application / xhtml + xml,application / xml; q = 0.9,* / *; q = 0.8 Accept-Language:en-us,en; q = 0.5 Accept-Encoding:gzip,deflate Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.7 保持活力:300 连接:保持活力
正如你所看到的那样
主机:superuser.com
位标识有问题的网站。
在IIS和Apache中,您可以configuration只接受来自特定IP /主机组合的请求的虚拟网站。
至于你的特定问题,你将不得不阅读你的特定托pipe公司要如何请求configuration。
在一个IP地址/主机上托pipe多个域/子域的技术称为虚拟主机 。 http get请求包含请求所针对的域名,以允许Web服务器将请求与特定的虚拟域进行匹配。
如果你有多个物理主机在内部只有一个外部IP,那么你就需要考虑设置反向代理来将请求转发到正确的机器/内部IP地址。
您的networking服务器上的function通常称为“虚拟主机”。 一旦你指出DNS条目指向一个IP地址(如其他答案中提到的),服务器将根据请求的主机是什么来服务于不同的站点。
至于指向另一个盒子去。 如果您希望首先获取查询,则可以在大多数Web服务器中configurationredirect。 如果你在谈论子域名,那么你所做的就是将每个子域名指向不同的IP地址。
即host.com – > IP 1,然后是www.host.com – > IP 2和mail.host.com – > IP 3
如果你想要更具体的答案,你需要说什么操作系统上运行的Web服务器软件。
您可能会发现ServeFault是这个问题的一个更好的地方。
简而言之…
一 – 设置您的各个域的DNS条目都指向您的方框。
两个 – 正如其他人所描述的,设置您的Web服务器(您不要说哪一个)匹配请求的主机名。
这样,您所有域的所有请求都会转到同一台机器上,并且它的configuration会将所请求的域和路由到包含该网站内容的正确文件夹。
从你的问题,听起来像你有一个单独的物理服务器的第二个网站。 在这种情况下,您将无法为两台服务器使用单个IP地址。 您可以:a)为您的第二台主机获取第二个公有IP地址;或者b)设置一个智能代理,根据主机头将请求转发到内部networking上的不同服务器。 我很确定b)是可能的,但是我不知道它是如何工作的,所以你不得不去问问别人,如果这是你正在做的。
如果我正在读你的问题,你有两台不同的计算机通过NAT(networking地址转换)共享一个IP地址? 如果是这样,你将不得不有一个网站监听不同的端口(不是80) – 我不知道有什么好的方法让路由器根据HTTP“主机”元数据发送请求到不同的计算机。 你最好再为第二台服务器获取第二个IP地址。