Nginx负载均衡
什么是负载均衡?
负载均衡就是,把请求均衡地分发到后端的各个机器上面。
比如,A B C D 四台WEB服务器,现在E要访问这4台服务器,F为Nginx反向代理服务器,可以放F把E的请求均衡地分发给A B C D 4台服务器上
配置:
upstream apelearn //定义负载均衡组,有哪些ip
{
ip_hash; //hash算法
server 115.159.51.96:80 weight=100; //真正的IP地址
server 47.104.7.242:80 weight=10; //真正的IP地址
}
server
{
listen 80;
server_name www.apelearn.com; //主机地址
location /
{
proxy_pass http://apelearn; //upstream定义的的字符串
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
补充:
# yum install -y bind-utils
# dig //查看域名解析到那个IP地址
配置Nginx的ssl
Nginx的SSL
让Nginx实现用https来访问网站。http是80端口,http是443端口,https其实是一种加密的http
SSL工作流程:
浏览器发送一个https的请求给服务器;
服务器要有一套数字证书,可以自己制作(后面的操作就是阿铭自己制作的证书),也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出>提示页面,这套证书其实就是一对公钥和私钥;
服务器会把公钥传输给客户端;
客户端(浏览器)收到公钥后,会验证其是否合法有效,无效会有警告提醒,有效则会生成一串随机数,并用收到的公钥加密;
客户端把加密后的随机字符串传输给服务器;
服务器收到加密随机字符串后,先用私钥解密(公钥加密,私钥解密),获取到这一串随机数后,再用这串随机字符串加密传输的数据(该加密为对称加密,所谓对称加密,就是将数据和私钥也就是这个随机字符串>通过某种算法混合在一起,这样除非知道私钥,否则无法获取数据内容);
服务器把加密后的数据传输给客户端;
客户端收到数据后,再用自己的私钥也就是那个随机字符串解密;
配置:
ssl on;
ssl_certificate aminglinux.crt;
ssl_certificate_key aminglinux.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
申请证书:
网站(生产环境用):www.wosign.com(沃通)
免费的:freessl.cn
注册账号、属于名
进入freessl.cn网站,注册号后登陆,证书列表-->申请证书
输入用户名,点击“创建免费的ssl证书”
将验证信息内容添加到到dnspod.cn网站中验证
注册dnspod.cn网站,并登录,进入域名解析,如果没有域名,先注册一个域名,再进行解析
点击立即体验,进入域名解析,对域名添加验证记录
回到证书申请界面点击验证,稍等几分钟,验证成功后就会生成证书,进入证书界面
保存三个证书,
# cd /etc/nginx
# mkdir ssl
# cd ssl
# vi ca //将ca证书信息内容拷贝到该文件里
# vi bbs.crt //将证书的内容信息拷贝到该文件里
# vi bbs.key //将私钥的内容信息拷贝到该文件里
下面修改主机配置文件
# vi /etc/nginx/conf.d/bbs.wangzb.cc.conf
server {
listen 443 ssl;
server_name bbs.wangzb.cc;
ssl on;
ssl_certificate /etc/nginx/ssl/bbs.crt;
ssl_certificate_key /etc/nginx/ssl/bbs.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# nginx -t
# nginx -s reload
# netstat -ltnp //查看443端口
此时还不能访问,需要将443端口增加到firewall里
# firewall-cmd --add-port=443/tcp --permanent //增加443端口到firewall
# firewall-cmd --reload //重载firewall
最后在Windows的hosts文件中增加地址解析。
返回freessl网站证书申请验证界面,点击验证,验证成功后,再次访问bbs.wangzb.cc,可以看到网址是https开头的