首页  >  文章  >  一个ip地址可以对应多个域名吗

一个ip地址可以对应多个域名吗

angryTom
angryTom原创
2019-07-22 13:20:1345541浏览

一个ip地址可以对应多个域名吗

推荐教程:linux教程

首先,一个IP绑定多个域名是很常见的事情,租用的虚拟主机大多数都是多个主机共享同一个IP,区分具体访问的是哪个主机要从两个方面实现:

1、客户端如何区别不同网站

客户端在请求时,会在HTTP请求的时候包含要请求的具体主机名称,比如访问Google的请求通过抓包分析内容是这样的:

GET / HTTP/1.1
Host: www.google.com

整个请求会被发送到服务器上,其中有Host字段标识你要请求的网站域名是什么,即使访问的是同一个IP地址,由于Host字段不同,所以服务器软件有办法区分具体访问的是哪个网站。

关于Host字段的具体定义,可以阅读RFC-2616的第14.23节:http://www.rfc-editor.org/rfc/rfc2616.txt

以下是节选(注意加粗的部分):

14.23 Host

  The Host request-header field specifies the Internet host and port
  number of the resource being requested, as obtained from the original
  URI given by the user or referring resource (generally an HTTP URL,
  as described in section 3.2.2). The Host field value MUST represent
  the naming authority of the origin server or gateway given by the
  original URL. This allows the origin server or gateway to
  differentiate between internally-ambiguous URLs, such as the root "/"
  URL of a server for multiple host names on a single IP address.

另外,RFC-2616并非HTTP协议的最新规范,具体的规范请参考RFC-2616的描述链接:Information on RFC 2616

2、服务器端如何配置

如果服务器使用Apache,那么在Apache的配置文件中加入VirtualHost即可新增虚拟主机:

<VirtualHost 10.0.0.1>
ServerAdmin admin@admin
DocumentRoot "D:/website1"
ServerName http://myhost1.com
DirectoryIndex index.php
</VirtualHost>
<VirtualHost 10.0.0.1>
ServerAdmin admin@admin
DocumentRoot "D:/website2"
ServerName http://myhost2.com
DirectoryIndex index.php
</VirtualHost>

以上就定义了两个域名http://myhost1.com和http://myhost2.com,分别在不同的根目录,通过这样的配置Apache如果收到http://myhost1.com的请求,那么就到d:/website1里寻找对应的页面,如果是http://myhost2.com的请求,那么就到d:/website2里寻找对应的页面。

通常Apache还有一个默认网站,这个网站是可以使用IP地址访问的,如果将这个网站设置为无效,那么这个主机就无法通过IP地址直接访问HTTP资源。

对于IIS来说,IIS能使用同一个IP绑定多个站点,具体可以参考下图:

web21.jpg

在默认网站->属性->网站->高级中,添加不同的域名即可。因为我的IIS版本较低,本身无法支持绑定多个网站,高版本的IIS中,可以配置多个网站,每个网站绑定不同的域名,即可实现访问时的区分。

如果服务器没设置默认网站,那么IP地址也无法直接访问主机。

所以,如果你直接通过IP地址访问网站,会遇到两种情况:

1、服务器设置了默认网站,或者使用IP作为主机名去匹配请求的Host字段,那么你通过IP访问的就是这个网站;

2、服务器没有设置默认网站,或者默认网站被禁止,那么你通过IP无法打开任何东,通常遇到的是404错误(找不到页面),在我使用过的几个虚拟主机服务商那,遇到的都是类似的错误。

另外,不管是IIS或者Apache或者其它类型的网站服务器软件,不仅仅支持多域名,也支持多IP,也就是一个服务器同时有多个域名和多个IP,互相之间是互不干扰的。

以上是一个ip地址可以对应多个域名吗的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn