Nginx负载均衡,ssl原理,生成ssl密钥对,Nginx配置ssl
Nginx负载均衡:
关于 负载均衡 实际上和上一篇末尾讲的代理 服务器 的概念差不多,代理一台机器,叫做代理服务器,代理多台机器就叫做负载均衡。
使用负载均衡是为了将多个用户的请求均匀的发送给多台web服务器,如果没有负载均衡的话,用户A访问web服务器A时,web服务器A宕机了,那么用户A的访问请求就不会被处理,而有负载均衡的话,负载均衡会把用户A的访问请求发送给其他的web服务器去进行处理。
在配置负载均衡前先介绍一个命令:dig
安装命令:
yum -y install bind-utils
dig是用来进行 域名解析 的,例如我解析qq.com这个域名,使用dig能够反馈更多的解析信息:
dig YY.com
现在我们开始配置负载均衡,新建一个虚拟主机配置文件:
vim /usr/local/nginx/conf/vhost/ld.conf
增加以下内容,我拿解析到YY.com的ip来当服务器做这个实验:
upstream YY_com #upstream是一个模块,需要使用它来定义多个IP YY_com=名字可以任意修改
ip_hash; #ip_hash是为了让同一个用户始终保持在同一个机器上
#定义两个服务器的ip,qq.com解析出来的ip
server 221.228.79.225:80;
server 113.107.236.195:80;
server
listen 80; #定义监听端口
server_name www.YY.com; #定义域名
location /
proxy_pass http://YY_com; #upstream的名称,这个名称代表着upstream里定义的ip
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
编辑完之后保存退出,先不要重新加载配置文件,先测试一下用本机ip去访问www.YY.com这个域名看看结果会是什么:
这时我们重新加载配置文件,再访问一次看看: -t && -s reload
可以看到能够访问到www.YY.com,并输出了这个页面的html源码,这个就是负载均衡。
关于Nginx负载均衡方面要注意一点:
Nginx不支持直接代理https,只能代理http,也就是说443端口不支持只支持80端口。如果非要代理https,只能是用户访问Nginx代理服务器时使用https,然后Nginx去访问后端的web服务器时使用http,属于折中的一种方式,依然不能直接代理。
ssl原理:
ttps就是使用ssl加密的http,是一种加密的超文本传输协议。如果http不加密的话,被人抓包或监听了数据包,就能很轻易地看到数据包里面的数据内容,那样的话你的信息就泄露了。
如果使用的是https协议,那么你的数据包就会被加密,即便被人抓包了,也没有那么轻易破解加密算法,因为数据包只能使用服务器上的私钥解密,而服务器根本不会在任何情况下发送私钥,想要不通过私钥来直接破解数据包几乎是不可能的。
生成ssl密钥对:
理解了ssl原理后,现在我们可以在虚拟机上去生成ssl密钥对,也就是自己制作证书。我们需要使用一个工具来生成密钥对,把密钥对放在nginx的conf目录下。
进入nginx的conf目录:
cd /usr/local/nginx/conf
我们需要使用到的工具是openssl,如果你虚拟机没有此命令,需要自己安装,安装命令:
yum -y install openssl
准备完成后,第一步是生成一个私钥,命令如下:
openssl genrsa -des3 -out tmp.key 2048 //key文件为私钥 tmp.key = 私钥名字
第二步,是把密码取消掉,如果不取消的话,会每次都要求客户端输入此密码,命令如下:
openssl rsa -in tmp.key -out aminglinux.key //转换key,取消密码
这时候就可以把tmp.key给删掉了:
rm -f tmp.key
第三步就是去生成一个请求的文件,生成这个请求文件的目的是为了让这个请求文件和私钥一起去生成一个公钥,命令如下,会要求你输入一些信息,因为是自己制作的证书所以随便输入也是可以的,如果是正式的证书就不可以随便写了:
openssl req -new -key aminglinux.key -out aminglinux.csr
第四步就是生成公钥了,命令如下:
openssl x509 -req -days 365 -in aminglinux.csr -signkey aminglinux.key -out aminglinux.crt
现在我们的证书就制作完成了,可以看到有这样的三个文件:
Nginx配置ssl:
我们生成好密钥对也就是证书之后,就可以使用Nginx配置SSL了。
先创建一个目录:
mkdir /data/wwwroot/aming.com
然后创建一个文件:
vim /usr/local/nginx/conf/vhost/ssl.conf
配置文件内容:
server
listen 443;
server_name aming.com;
index index.html index.php;
root /data/wwwroot/aming.com;
ssl on;
ssl_certificate aminglinux.crt;
ssl_certificate_key aminglinux.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;