1 nginx 负载均衡

当被代理的服务端为多台服务器时,就存在一个分发的问题,那么就涉及到一个负载均衡的概念。如何让客户端请求按照预定的设想均衡的分发到各个服务器上,就要使用各种均衡算法。下面介绍的ip哈希算法可以实现如下目的。
当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。这样,当来自某个IP的用户在后端Web服务器A上登录后,再访问该站点的其他URL,能够保证其访问的还是后端Web服务器A。如果请求的网站涉及到用户名密码等登陆信息,不至于下次访问时请求到其他服务器上而丢失。
我们还以百度为例,就是在之前的反响代理基础上加上ip_hash 算法
我们执行 dig www.baidu.com 挖出两个代理ip
61.135.169.125
61.135.169.121

upstream baidu_com
{
    ip_hash;
    server 61.135.169.125:80;
    server 61.135.169.121:80;
}
server
{
    listen 80;
    server_name www.baidu.com;
    location /
    {
        proxy_pass      http://baidu_com;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

curl -x127.0.0.1:80 www.baidu.com
我们发现可以访问,也就是说这个代理服务器起作用了,但是怎么验证他的负载均衡了,就是怎么查看最终访问到哪一个ip呢,有知道的小伙伴可以给我留言。

2 https加密原理

htttps 相对于http来说多了一套数字认证过程,客户端和服务器之前的通信是加密过的,因此具有很高的安全性。下面我们根据下图所示原理,逐一说明该加密传输过程。
Linux学习总结(四十三)nginx 负载均衡 https 配置
1 客户端发起一个htts请求
2 服务端通过受信任的颁发机构获得ssl证书。
3 服务端用该证书的公钥相应请求给客户端。
4 客户端验证该收到的公钥的合法性和有效性,无效发出警告提醒。有效则生成随机字符串,并用该公钥加密。
5 客户端发送加密过的字符串给服务端。
6 服务端收到来自客户端加密过的随机字符串,用ssl证书私钥解密该字符串
7 服务端用解密出来的字符串加密请求页数据返回给客户端
8 客户端用随机字符串解密数据。
备注:该过程当中,客户端生成的随机字符串是一次性的

3 生成ssl秘钥对

cd /usr/local/nginx/conf
openssl genrsa -des3 -out tmp.key 2048//key文件为私钥,根据提示输入两次密码
openssl rsa -in tmp.key -out lvlinux.key //转换key,取消密码 。根据提示输入上面的密码
rm -f tmp.key
openssl req -new -key lvlinux.key -out lvlinux.csr//生成证书请求文件,需要拿这个文件和私钥一起生成公钥。根据提示填写相关信息。
openssl x509 -req -days 365 -in lvlinux.csr -signkey lvlinux.key -out lvlinux.crt
 这里的lvlinux.crt为公钥

4 nginux 配置ssl

vim /usr/local/nginx/conf/vhost/ssl.conf//加入如下内容

server
{
    listen 443;
    server_name lvlinux.com;
    index index.html index.php;
    root /data/wwwroot/lvlinux.com;
    ssl on;
    ssl_certificate lvlinux.crt;
    ssl_certificate_key lvlinux.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}

-t && -s reload //若报错unknown directive “ssl” ,需要重新编译nginx,加上--with-http_ssl_module
mkdir /data/wwwroot/lvlinux.com
echo "ssl test" >/data/wwwroot/lvlinux.com/index.html
编辑hosts,增加127.0.0.1 lvlinux.com
curl https://lvlinux.com/
Linux学习总结(四十三)nginx 负载均衡 https 配置
发现证书颁发机构被标记为不受用户信任,我们自己颁发的证书当然是这样了.
在windos上绑定hosts 用浏览器访问
Linux学习总结(四十三)nginx 负载均衡 https 配置
注意我们要 netstat -lntp 查看有没有监听443 端口,没有的话重启下nginx