您的位置:首页 > 运维架构 > Nginx

11月29日学习笔记

2018-11-30 01:40 363 查看

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

12.17 Nginx负载均衡

12.18 ssl原理

12.19 生产ssl密钥对

12.20 Nginx配置ssl


Nginx负载均衡

1.nginx负载均衡(实际上代理一台web服务器就是反向代理,代理多台web服务器就是负载均衡)

  网站的访问量越来越大,服务器的服务模式也得进行相应的升级,比如分离出数据库服务器、分离出图片作为单独服务,这些是简单的数据的负载均衡,将压力分散到不同的机器上。有时候来自web前端的压力,也能让人十分头痛。怎样将同一个域名的访问分散到两台或更多的机器上呢?这其实就是另一种负载均衡了,nginx自身就可以做到,只需要做个简单的配置就行。

  nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。

Nginx负载均衡一些基础知识:

nginx 的 upstream目前支持 4 种方式的分配 

1)、轮询(默认) 

  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 

2)、weight 

  指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 

2)、ip_hash 

  每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。  

3)、fair(第三方) 

  按后端服务器的响应时间来分配请求,响应时间短的优先分配。  

4)、url_hash(第三方)

 

Nginx负载均衡配置如下:

vim /usr/local/nginx/conf/vhost/load.conf                      // 写入如下内容

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;    

                      } 

}

 upstream来指定多个web server  ,nginx不支持代理https

 

 

ssl原理

浏览器发送一个https的请求给服务器;

 服务器要有一套数字证书,可以自己制作(后面的操作就是自己制作的证书),也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出>提示页面,这套证书其实就是一对公钥和私钥;

 服务器会把公钥传输给客户端;

 客户端(浏览器)收到公钥后,会验证其是否合法有效,无效会有警告提醒,有效则会生成一串随机数,并用收到的公钥加密;  

客户端把加密后的随机字符串传输给服务器;  

服务器收到加密随机字符串后,先用私钥解密(公钥加密,私钥解密),获取到这一串随机数后,再用这串随机字符串加密传输的数据(该加密为对称加密,所谓对称加密,就是将数据和私钥也就是这个随机字符串>通过某种算法混合在一起,这样除非知道私钥,否则无法获取数据内容);  

服务器把加密后的数据传输给客户端;

 客户端收到数据后,再用自己的私钥也就是那个随机字符串解密;

                                                                    ssl原理示意图

1ff8

 

 

 

生产ssl密钥对

cd /usr/local/nginx/conf  

openssl genrsa -des3 -out tmp.key 2048                                    //key文件为私钥,genrsa表示生成rsa形式的私钥  

openssl rsa -in tmp.key -out aminglinux.key                             //转换key,取消密码  

rm -f tmp.key  openssl                                                             //转换完成之后就可以删除tmp.key了

req -new -key aminglinux.key -out aminglinux.csr                  //生成证书请求文件,需要拿这个文件和私钥一起生产公钥文件  

openssl x509 -req -days 365 -in aminglinux.csr -signkey aminglinux.key -out aminglinux.crt      //这里的aminglinux.crt为公钥

 

Nginx配置ssl

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服务

                 ssl_certificate aminglinux.crt;                                 // 龚玥

                ssl_certificate_key aminglinux.key;                          //私钥

                 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                      //证书

 }

 -t && -s reload                 //若报错unknown directive “ssl” ,需要重新编译nginx,加上--with-http_ssl_module; 

 mkdir /data/wwwroot/aming.com 我们测试语法的时候会提示nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/vhost/ssl.conf:7 //证明我们编译的时候没有加上ssl

  重新编译 ./configure --prefile=/usr/local/nginx/ --with-http-ssl_module

 echo “ssl test page.”>/data/wwwroot/aming.com/index.html

 编辑/etc/hosts,增加127.0.0.1 aming.com     //这里不编辑报403的错误  

curl https://aming.com/                                 //    https的测试是这样的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Nginx OpenSSL Vim