先从最熟悉,也是最表层的域名和ip说起:
比如你和我,你叫张三,我叫李四,名字类似于域名。你在网吧玩,很多太多台电脑各自都有个座位号,座位号就类似于ip,我想去网吧找你去玩电脑,光知道名字,但不知道你位置,所以,就需要DNS。
DNS
DNS就是说ip一长串,不好记啊,想个办法弄个简单名字,所以他的主要功能就是把域名转换成具体的ip地址,就是说找你位置,我光知道名字不行,我还得找到具体的座位ip才行。
域名系统作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
注意:这域名可以和ip地址绑定,一个ip地址可以被多个域名绑定
HOSTS
再说hosts,这个是个本地域名解析文件,不管你是windwos还是linux,那都是有的,没有就自己建一个。
windows一般在:C:/Windows/System32/drivers/etc/hosts
Linux的hosts文件路径一般:/etc/hosts
范例:
127.0.0.1 localhost
127.0.0.1 www.test.com
这个文件其实也是配置了ip和域名之间的映射关系的数据库,有啥作用呢,就是说,本地要是有这个文件,就优先用这个文件中的配置去解析,如果没有,那就通过nds解析。
注意:hosts文件只能配置ip和域名的映射关系,但是不能配置端口号,默认访问80端口
Nginx
因为要解决端口问题,这里就得使用大名鼎鼎的反向代理软件:Ngin,至于Nginx是什么,怎么安装配置,可以在我以前的文章查看或者度娘搜索。
简单的范例:
//nginx.conf
server {
listen 80; //监听的端口
server_name test.com; //监听的域名
proxy_set_header Cookie $http_cookie; //头信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://localhost:8080; //代理转发,所有到test.com 80端口访问的请求,都会转发到本地8080端口处理
}
}
关于域名解析的顺序问题:
先查本地hosts文件,有则获取对应的ip,(nginx -t 会检测并缓存 proxy_pass 后的域名对应的 IP ,这里需要调用 DNS),之后再查DNS服务器。