一、域名和证书介绍
在近期的前端资源配置中,遇到过域名对应的证书和密钥的对应关系:
1、我们先来看一下域名的分类:
- 顶级域名:
是互联网DNS等级之中的最高级的域,它保存于DNS根域的名字空间中。顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如在example.com这个域名中,顶级域是.com(或.COM),大小写视为相同。
- 二级域名:
就是最靠近顶级域名左侧的字段。如:zh.wikipedia.org中,wikipedia就是二级域名(有资料认为, 在顶级域名后面, 还存在一级域名, 那么zh就是二级域名)。
我国在国际互联网络信息中心(Inter NIC正式注册并运行的顶级域名是.cn,这也是我国的一级域名.在顶级域名之下,我国的二级域名又分为类别域名和行政区域名两类。类别域名共6个,包括用于科研机构的.ac;用于工商金融企业的.com;用于教育机构的.edu;用于政府部门的.gov;用于互联网络信息中心和运行中心的.net;用于非盈利组织的.org。而行政区域名有34个,分别对应于我国各省、自治区和直辖市。
- 父域名和子域名(也有资料称为二级域名)
一个相对概念,很好理解.如 www.sina.com.cn 和 news.sina.com.cn 都是 sina.com.cn的子域名(或称为二级域名), sina.com.cn就是父域名。同样,sina.com.cn其实又可以看作是.com.cn的子域名;而com.cn又是.cn的一个子域名
2、ssl证书对应的域名
SSL证书有三种类型: - 单域名证书:可以绑定一条带www和不带www的域名,比如admin.com和 www.admin.com 就是一条;
- 多域名证书:可以绑定250多条任意类型的域名;
- 泛域名证书:可以绑定一条顶级域名和顶级域名下的所有二级域名,或者是一条二级域名和二级域名下的所有三级域名。
那列举这些是为了解决什么问题呢?
答:在配置https的时候在一台服务上可能需要配置两个域名或者更多,正常的思维是一个域名那我就要配置一个证书等,但是在配置的时候并不是,发现以.example.com的域名,其下的子域名比如: a..example.com和b.example.com其实使用的是同一份证书,原因就是他们的父域名是同样的.像这种情况,我们只需要在服务器的nginx.conf
文件下,配置一份证书就可以了.
二、nginx负载均衡
配置负载均衡目的
是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务。
示例:
春节期间在12306网站上,有时查询一张火车票都会很慢,甚至整个网页都卡住不动了,由于一个Web服务同时能处理的用户并发请求的数量有限,同时还有机器故障的情况,所以一个Web站点通常会在N台机器上各部署一套同样的程序。当某一个服务挂掉的时候,还有第二个、第三个、第N个服务。。。继续为用户提供服务.如果有一个服务正在同时处理1000个用户的请求,这个服务的上限可能最多能同时处理1000个用户的请求,这时它已经很忙了,如果此时又有一个新请求过来,我们仍然把这个请求分配给这台机器,这时候这个请求就只能在干等着,等这个服务处理完那些请求后,再继续处理它。
负载均衡
将用户的所有HTTP请求均衡的分配到每一台机器上,充分发挥所有机器的性能,提高服务的质量和用户体验。
配置样例
实现负载均衡常用的Web服务器软件有Nginx、Apache等,本文介绍nginx下负载均衡策略;
1 | upstream slb { |
- proxy_pass http://slb 表示将所有请求转发到slb服务器组中配置的某一台服务器上;
- upstream模块:配置反向代理服务器组,Nginx会根据配置,将请求分发给组里的某一台服务器,slb是服务器组的名称;
- upstream模块下的server指令:配置处理请求的服务器IP或域名,端口可选,不配置默认使用80端口。通过上面的配置,Nginx默认将请求依次分配给100,101,102来处理,可以通过修改一些参数来改变默认的分配策略:
weight:默认为1,将请求平均分配给每台server;
max_fails:默认为1。某台Server允许请求失败的次数,超过最大次数后,在fail_timeout时间内,新的请求将不会分配给这台机器。如果设置为0,Nginx会将这台Server置为永久无效状态,然后将请求发给定义了proxy_next_upstream, fastcgi_next_upstream, uwsgi_next_upstream, scgi_next_upstream, and memcached_next_upstream指令来处理这次错误的请求;
fail_timeout:
默认为10秒,某台Server达到max_fails次失败请求后,在fail_timeout期间内,nginx会认为这台Server暂时不可用,不会将请求分配给它;
还有一些参数,比如:backup, down, max_conns, resolve
说明:简单的配置其实就用到了upstream
,如有兴趣,可对其进行深入的了解,做前端,了解一些配置、系统、后端的知识还是很有必要的;