据说一个IP地址能绑定多个域名,服务端是如何实现的?
假如我用IP来连接某个服务器,这个服务器如何知道的我想上哪个网站呢?
1楼(未知网友)
这个很简单,你为什么不看看HTTP协议呢。
HTTP数据报文里的header里的HOST就是访问的域名,IIS等web server的站点里绑定这个HOST就OK了
2楼(未知网友)
HTTP请求报文中的Host就是网站域名。
要是客户端给服务器发送的HTTP报文里Host不包含域名,那么会收到403 Forbidden错误提示的。
3楼(站大爷用户)
http报文里有一个header,有host
nginx服务器根据host 转发到不同的机器或端口
4楼(站大爷用户)
简单说来。。网站的区分使用IP不是用域名。
你输入不同的域名都是访问那个被绑定的IP。
5楼(未知网友)
楼主说的是web服务器吧,对于同一个WEB服务器下,区分不同的网站一般有三种形式:主机头、端口号、ip地址。
既然是同一个ip绑定多个域名的情况,那必然是通过主机头来进行区分。
这(举个例子:
有A,B两个网站,
A站的域名是http://aaa.com,
B站的域名是http://bbb.com,
两个域名同时解析到192.168.1.101的地址上。
那么在配置web服务器的时候,
新建第一个网站
主机头为webA,
ip为192.168.1.101,
绑定域名为http://aaa.com
新建第二个网站
主机头为webB,
ip为192.168.1.101,
绑定域名为http://bbb.com,
当用户访问http://aaa.com时,
首先由dns解析出ip为192.168.1.101,
然后访问这台服务器http请求,
服务器根据你要访问的域名判断出是webA这个网站,就会响应对应的信息。
---------------------------------------
如果直接用ip地址请求呢?
web服务器下有一个默认网站,默认网站里放的是哪个网站,用ip请求响应的就是哪个网站的默认页面。
6楼(未知网友)
只用过Apache实验过这个问题。
在Apache里,如果没有单独绑定基于IP的虚拟主机,则直接访问IP的话,他会用配置文件里读取到的第一个虚拟主机来响应。
7楼(站大爷用户)
占坑,明天答。
8楼(站大爷用户)
如果服务器上没有开启未绑定任何域名的默认站点,那你用IP访问打不开任何站点。
9楼(未知网友)
你请求的时候,http头里有host,那个就是域名
10楼(未知网友)
首先,一个IP绑定多个域名是很常见的事情,租用的虚拟主机大多数都是多个主机共享同一个域名,区分具体访问的是哪个主机要从两个方面实现:
1、客户端如何区别不同网站
客户端在请求时,会在HTTP请求的时候包含要请求的具体主机名称,比如访问Google的请求通过抓包分析内容是这样的:
GET / HTTP/1.1
Host: www.google.com