虚拟主机和域名解析
1. IP、DNS、域名、http
- IP:IP地址是用来唯一标识互联网中pc机(计算机)的逻辑地址。在网络中,让电脑进行通信,都是靠ip进行的,所以他们只认识ip
- 域名:列入计算机本地ip是127.0.0.1,但是对于大部分人想要记住ip是一件难事。于是出来域名。例如百度的ip是198.65.123.23,但是百度的域名为www.baidu.com更好记。
- DNS:上面说到计算机之间的通信,只认识Ip,但是ip难记,我们选择了域名,而DNS就是把域名解析成ip,所以DNS也就叫做DNS解析器。
- http:http是OSI模型的第5层。它是基于TCP,UDP之上的一种协议。有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。
2. 虚拟主机的工作原理
背景:一个服务器只有一个ip地址,此时就会出现一个问题,当开启一个站点,访问量不会那么高,主机上的资源就浪费(一台主机上只有一个站点)
方法:
-
将一台实际物理主机虚拟出多台主机(原本是一个域名对应一个ip,现在是多个域名对应一个ip)
-
由Nginx来判断你访问的是哪一个域名,指向不同的站点目录就可以。
单台主机工作:当用户访问域名时,通过DNS解析出IP地址,然后通过ip向Nginx发送报文,Nginx读到报文后,我去该目录获取资源,返回给用户。
俩台主机工作:俩个域名同时解析出一个ip(因为是虚拟出来的主机,所以和实际主机一样都是共享一个ip),此时为了区分不同的域名,在http协议层上,通过在http请求头上
加上域名来进行区分,此时请求不同的域名,就能访问到不同的资源。
3. 虚拟主机的配置
虚拟主机的配置有俩种,一种是端口号不同,另一个种是域名不同。
端口号和域名,只要其中有一个不同就可以,不能完全相同,不然会出现冲突
演示:
前提工作:
设置俩个文件资源目录分别是/www/www 和/www/video
修改nginx.conf配置
模拟端口号不同
保证域名相等,这里都是localhost,端口号一个80,一个88
上面那些配置都不动,只需要复制一份server,把端口号改成88就可以
server {
listen 80;
server_name localhost;
location / {
# root html; 改成www
root /www/www; #主站点
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 88;
server_name localhost;
location / {
# root html; 改成www
root /www/video; #视频主站点
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
运行结果:
模拟域名不同
保证端口号相等,端口号为80,域名一个为www.xiaodainiao.com一个为video.xiaodainiao.com
上面那些配置都不动,只需要复制一份server,把端口号改成88就可以
server {
listen 80;
server_name www.xiaodainiao.com;
location / {
# root html; 改成www
root /www/www; #主站点
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name video.xiaodainiao.com;
location / {
# root html; 改成www
root /www/video; #视频主站点
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
运行结果