十三周一次课 2018.01.08 Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl

12.17 Nginx负载均衡


负载均衡和代理有点类似,代理一个叫代理,代理多个就可以叫负载均衡了。

配置这个负载均衡用到了一个upstream模块,这里我们使用qq.com为例,ip——hash下面指定的是解析到的ip。

查看域名解析到的ip可以使用dig加域名。如,如果没有安装就安装一下

然后我们就按照上图开始配置,


upstream qq_com
{
    ip_hash;
    server 61.135.157.156:80;
    server 125.39.240.113:80;
}
server
{
    listen 80;
    server_name www.qq.com;
    location /
    {
        proxy_pass      http://qq_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;
    }
}

的作用是让同一个用户始终保持在同一台服务器上,(如果不保持在同一台服务器上,用账户登录了网站但是刷新一下可能就显示没有登录了)

定义两个server,格式是ip:端口,如果是80端口那么后面的80就可以省略。

定义监听端口,定义域名

指定代理的ip,我们这里直接指定upstream的名字就行,然后保存退出。

然后我们可以来测试一下。

正常情况下你用本机访问www.qq.com会访问到默认虚拟主机


然后我们-t检查错误然后重新加载,之后再访问就不是默认虚拟主机了,而是真正的qq主页。

Nginx不支持代理https,只支持http,据说新版本支持tcp

12.18 ssl原理

https和http的区别是通信是加密的,如果不加密就有可能被从中间截掉,泄露数据,而加密了的即使被人截到也是看不了内容的。

实现加密解密的流程:



分别是私钥和公钥,私钥是用来解密的,公钥是用来加密的。

12.19 生成ssl密钥对


openssl genrsa -des3 -out tmp.key 2048//key文件为私钥
 openssl rsa -in tmp.key -out aminglinux.key //转换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

了解了ssl流程之后我们可以尝试自己来做一个证书,就是公钥和私钥。

首先我们需要一个工具openssl,如果没有就需要装一个如下的包,


1.首先移动到改目录下

2.然后生成一个rsa形式的名字叫tmp.key的私钥,2048长度

然后输入它的密码,密码是必要的,然后重复输入一次。

3.因为密码比较麻烦,你不可能每次登网页都输入密码,所以我们要把它去掉,所以第三步就是转换key,取消密码

-in指定哪一个密钥要被转换,-out指定它输出的。

然后输入tmp.key的密码,现在tmp.key和aminglinux.key是一个私钥,只不过前面有密码,后面的这个没有密码,然后我们就可以把tmp.key删掉啦。

4.然后我们还需要生成一个请求的文件,是为了让这个请求的文件和私钥生成一个公钥。


请求文件需要包含一些东西如下图,我们随便写一写吧(因为这是我们自己给自己做的证书)。也可以不写直接回车。但是如果是正式的证书就需要填对。


倒数第二步是填写密码。

5.然后我们用生成公钥,


365是证书的日期是一年。

然后我们就就可以配置nginx的ssl了。crt是公钥,key是私钥。

12.20 Nginx配置ssl


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;
}

我们来创建一个新的虚拟主机配置文件,然后加上如上代码。

root一行的路径需要创建一下。

表示开启ssl,支持https

指定公钥,指定私钥。

指定协议,一般我们三种都配置上。

然后我们保存检查错误,重新加载,来测试一下,

这里检查错误的时候报错了


(原因是我们最早编译nginx的时候并没有指定它支持ssl,)


所以我们给它重新编译一下。


搜索一下,


这里我们需要加上下图选中的配置


然后make和make install,完成之后如下图,多了一个


然后在-t,在重新启动nginx就可以了。

然后我们查看一下它的监听端口,可以发现多了一个443


然后我们到下创建一个index.html的测试文件,然后在里面输入

然后我们来测试一下

直接用会400,所以我们需要绑定一下hosts



然后我们不用-x指定直接这样访问,然后它会提示我们这证书不合法,因为我们这个是自己颁发的,但是实际上我们已经配置成功了。

我们也可以用Windows浏览器访问一下,不过我们也需要绑定一下Windows的host。如下(具体ip以本机为准)


然后在浏览器里访问如下地址


如果访问不了就要看看有没有防火墙了,


有的话就用简单点的方法关掉,如果不想全部清空你需要加一个443端口的规则。

然后我们再来访问刚刚的网址如下图会提示警告,我们点高级继续访问即可。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值