zoukankan      html  css  js  c++  java
  • 8.16 nginx负载均衡、SSL原理、生成SSL密钥对、nginx配置SSL

    1、nginx负载均衡

      执行yum install -y bind-utils安装dig命令,通过dig qq.com可以查看到返回两个IP地址

      创建配置文件 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;

      }

    }

       正常情况下,在本机访问qq.com会访问默认虚拟主机

      但是当加载上述命令之后,再进行访问时,则会正常访问qq.com

      nginx只能代理http,不支持代理https

     2、SSL原理

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

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

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

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

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

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

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

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

    3、生成SSL密钥对

      在生成密钥对之前需要执行yum install -y openssl安装openssl

      进入到/usr/local/nginx/conf目录下,执行openssl genrsa -des3 -out tmp.key 2048生成私钥(需要输入密码)

      然后转换key,取消密码,执行如下命令:openssl rsa -in tmp.key -out aminglinux.key,此时tmp.key和aminglinux.key其实是同一个key,然后输入aminglinux.key的密码

      执行rm -f tmp.key删除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

        aminglinux.crt就是公钥

    4、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;

    }

      然后执行/usr/local/nginx/sbin/nginx -t进行检查,由于在安装过程中,未指定ssl,因此会出现如下报错:

      需要重新进行安装nginx,执行如下命令:./configure --prefix=/usr/local/nginx --with-http_ssl_module

       然后执行make&&make install

      执行/etc/init.d/nginx restart重启服务,然后执行netstat -lntp查看监听端口为443

      在/data/wwwroot/aming.com/目录下创建index.html,然后随便写入一些数据

      此时通过curl -x127.0.0.1:443 http://aming.com/时,是无法访问的

      如果想要直接访问,需要编辑vi /etc/hosts中增加如下内容:127.0.0.1 aming.com

      然后再进行访问时,执行curl https://aming.com/,进行访问(由于证书是自己制作的,所以提示证书不可信任)

      可以通过编辑自己电脑的host主机,然后通过浏览器进行访问

  • 相关阅读:
    HDU 2089 不要62
    HDU 5038 Grade(分级)
    FZU 2105 Digits Count(位数计算)
    FZU 2218 Simple String Problem(简单字符串问题)
    FZU 2221 RunningMan(跑男)
    FZU 2216 The Longest Straight(最长直道)
    FZU 2212 Super Mobile Charger(超级充电宝)
    FZU 2219 StarCraft(星际争霸)
    FZU 2213 Common Tangents(公切线)
    FZU 2215 Simple Polynomial Problem(简单多项式问题)
  • 原文地址:https://www.cnblogs.com/w494129131/p/9485100.html
Copyright © 2011-2022 走看看