整个过程大致描述以下,其中前两个步骤是在本机完成的,后8个步骤涉及到真正的域名解析服务器:一、浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,若是缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不只浏览器缓存大小有限制,并且缓存的时间也有限制,一般状况下为几分钟到几小时不等,域名被缓存的时间限制能够经过TTL属性来设置。这个缓存时间太长和过短都不太好,若是时间太长,一旦域名被解析到的IP有变化,会致使被客户端缓存的域名没法解析到变化后的IP地址,以至该域名不能正常解析,这段时间内有一部分用户没法访问网站。若是设置时间过短,会致使用户每次访问网站都要从新解析一次域名。css
二、若是用户浏览器缓存中没有数据,浏览器会查找操做系统缓存中是否有这个域名对应的DNS解析结果。其实操做系统也有一个域名解析的过程,在Windows中能够经过C:\Windows\System32\drivers\etc\hosts文件来设置,在Linux中能够经过/etc/hosts文件来设置,用户能够将任何域名解析到任何可以访问的IP地址。例如,咱们在测试时能够将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是由于有这种本地DNS解析的规程,因此有黑客就可能经过修改用户的域名来把特定的域名解析到他指定的IP地址上,致使这些域名被劫持。html
三、前两个过程没法解析时,就要用到咱们网络配置中的"DNS服务器地址"了。操做系统会把这个域名发送给这个LDNS,也就是本地区的域名服务器。这个DNS一般都提供给用户本地互联网接入的一个DNS解析服务,例如用户是在学校接入互联网,那么用户的DNS服务器确定在学校;若是用户是在小区接入互联网,那么用户的DNS就是再提供接入互联网的应用提供商,即电信或联通,也就是一般说的SPA,那么这个DNS一般也会在用户所在城市的某个角落,不会很远。Windows环境下经过命令行输入ipconfig,Linux环境下经过cat /etc/resolv.conf就能够查询配置的DNS服务器了。这个专门的域名解析服务器性能都会很好,它们通常都会缓存域名解析结果,固然缓存时间是受到域名的失效时间控制的。大约80%的域名解析到这里就结束了,因此LDNS主要承担了域名的解析工做。linux
四、若是LDNS仍然没有命中,就直接到Root Server域名服务器请求解析nginx
五、根域名服务器返回给本地域名服务器一个所查询的主域名服务器(gTLD Server)地址。gTLD是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右c++
六、本地域名服务器LDNS再向上一步返回的gTLD服务器发送请求正则表达式
七、接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址,这个Name Server一般就是用户注册的域名服务器,例如用户在某个域名服务提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成算法
八、Name Server域名服务器会查询存储的域名和IP的映射关系表,在正常状况下都根据域名获得目标IP地址,连同一个TTL值返回给DNS Server域名服务器sql
九、返回该域名对应的IP和TTL值,LDNS会缓存这个域名和IP的对应关系,缓存时间由TTL值控制swift
十、把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束centos
在实际的DNS解析过程当中,可能还不止这10步,如Name Server可能有不少级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析过程。
http://www.javashuo.com/article/p-ufoeyroh-gm.html
Nginx 是 C语言 开发,建议在 Linux 上运行,固然,也能够安装 Windows 版本,本篇则使用 CentOS 7 做为安装环境。
一. gcc 安装
安装 nginx 须要先将官网下载的源码进行编译,编译依赖 gcc 环境,若是没有 gcc 环境,则须要安装:
yum install gcc-c++
二. PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,因此须要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也须要此库。命令:
yum install -y pcre pcre-devel
三. zlib 安装
zlib 库提供了不少种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,因此须要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
四. OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、经常使用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不只支持 http 协议,还支持 https(即在ssl协议上传输http),因此须要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel
使用wget
命令下载(推荐)。
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
我下载的是1.10.1版本,这个是目前的稳定版。
依然是直接命令:
tar -zxvf nginx-1.10.1.tar.gz cd nginx-1.10.1
其实在 nginx-1.10.1 版本中你就不须要去配置相关东西,默认就能够了。固然,若是你要本身配置目录也是能够的。
1.使用默认配置
./configure
make make install
查找安装路径:
whereis nginx
cd /usr/local/nginx/sbin/ ./nginx ./nginx -s stop ./nginx -s quit ./nginx -s reload
./nginx -s quit
:此方式中止步骤是待nginx进程处理任务完毕进行中止。./nginx -s stop
:此方式至关于先查出nginx进程id再使用kill命令强制杀掉进程