一、Nginx负载均衡

负载均衡:单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。那么负载均衡的前提就是要有多台服务器才能实现,也就是两台以上即可。

在开始部署负载均衡之前,我们先来介绍一个命令,dig命令需要yum安装一下

[root@lnmp ~]# yum install bind-utils

[root@lnmp ~]# dig qq.com            (dig后加域名,他可以返回2个ip.实则域名解析,我们就用这两个ip测试负载均衡)

; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.1 <<>> qq.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57513

;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:

;qq.com. IN A

;; ANSWER SECTION:

qq.com. 601 IN A 125.39.240.113

qq.com. 601 IN A 61.135.157.156

[root@lnmp ~]# vim /usr/local/nginx/conf/vhost/load.conf            (再来编写一个配置文件,需要用到upstream模块,upstream:数据转发功能,为nginx提供了跨越单机的横向处理能力,使nginx摆脱只能为终端节点提供单一功能的限制,而使它具备了网路应用级别的拆分、封装和整合的战略功能。)

upstream qq

{

ip_hash;           (负载均衡有多个web服务器,我们需要一个长连接来保持于一个服务器的链接,这里需要用到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;   (这里写的要与upstream一致,因为域名是虚拟的,下面的2个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;

}

}

检查语法错误并且重新加载配置文件。

[root@lnmp ~]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@lnmp ~]# /usr/local/nginx/sbin/nginx -s reload

[root@lnmp ~]# curl -x127.0.0.1:80 www.qq.com                (发现返回的是qq页面的源代码)

nginx不支持代理Https服务。也就是说不支持访问web服务器的443端口。

二、SSL原理

https和http相比,https的通信是加密的。如果不加密,比如你访问一个很重要的网站,数据包还是会到达,但是可能会用人从中间复制一份。https会把数据包加密,就算从中间复制也无法解码。

https的工作流程:

  1. 1.浏览器发送一个https的请求给服务器。

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

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

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

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

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

  7. 8.服务器把加密后的数据传输给客户端。

  8. 9.客户端收到数据后,在用自己的私钥也就是那个随机字符串解密。

三、Nginx配置ssl

Nginx配置ssl

[root@lnmp nginx-1.8.0]# vim /usr/local/nginx/conf/vhost/ssl.conf           (编写ssl的配置文件)

server

{

listen 443;                                        (监听443端口)

server_name lty.com;                                 (编写server_name)

index index.html index.php;

root /data/wwwroot/lty.com;

ssl on;                                       (开启ssl服务)

ssl_certificate lty.crt;                           (指定公钥)

ssl_certificate_key lty.key;                         (指定私钥)

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                   (指定三种模式)

}

[root@lnmp nginx-1.8.0]# /usr/local/nginx/sbin/nginx -t (如果nginx编译的时候没有加上ssl,这里会报错需要重新编译)

重新编译:

[root@lnmp nginx-1.8.0]# cd /usr/local/src/nginx-1.8.0

[root@lnmp nginx-1.8.0]# ./configure --help |grep -i ssl

--with-http_ssl_module             enable ngx_http_ssl_module

--with-mail_ssl_module             enable ngx_mail_ssl_module

--with-openssl=DIR                 set path to OpenSSL library sources

--with-openssl-opt=OPTIONS         set additional build options for OpenSSL

[root@lnmp nginx-1.8.0]# ./configure --prefix=/usr/local/nginx/ --with-http_ssl_module

[root@lnmp nginx-1.8.0]# make && make install

编译完成后就可以检查语法错误了,然后重新启动

[root@lnmp nginx-1.8.0]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx//conf/nginx.conf test is successful

[root@lnmp nginx-1.8.0]# /etc/init.d/nginx restart

Restarting nginx (via systemctl):                          [  确定  ]

创建测试页面:

[root@lnmp nginx-1.8.0]# mkdir /data/wwwroot/lty.com

[root@lnmp nginx-1.8.0]# vim /data/wwwroot/lty.com/index.html

因为是我们自己办法的证书,直接修改/etc/hosts,用Curl测试并看不出效果,提示证书已经失去信任。

[root@lnmp nginx-1.8.0]# vim /etc/hosts

127.0.0.1   lty.com

[root@lnmp nginx-1.8.0]# curl https://lty.com

curl: (60) Peer's certificate issuer has been marked as not trusted by the user.

More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"

of Certificate Authority (CA) public keys (CA certs). If the default

bundle file isn't adequate, you can specify an alternate file

using the --cacert option.

If this HTTPS server uses a certificate signed by a CA represented in

the bundle, the certificate verification probably failed due to a

problem with the certificate (it might be expired, or the name might

not match the domain name in the URL).

If you'd like to turn off curl's verification of the certificate, use

the -k (or --insecure) option.

编辑windows的hosts。

192.168.52.101 lty.com

用浏览器打开

https://lty.com

如果访问不到,查看防火墙信息简单的办法直接-F

12306网站是自己颁发的证书:(在中国的政府有些网站,认为只有自己的颁发的安全,所以用自己颁发的证书)

如果想要买证书,可以搜索 沃通,

本文转自 小新锐 51CTO博客,原文链接:http://blog.51cto.com/13407306/2059168,如需转载请自行联系原作者

LNMP(Nginx负载均衡,SSL原理,Nginx配置SSL,生产SSL密钥对)相关推荐

  1. Nginx负载均衡的原理

    1.Nginx负载均衡的原理是什么? ​ 客户端向反向代理发送请求,接着反向代理根据某种负载机制转发请求至目标服务器(这些服务器都运行着相同的应用),并把获得的内容返回给客户端,期中,代理请求可能根据 ...

  2. Nginx负载均衡的原理及流程分析

    负载均衡的原理及处理流程 系统的扩展可以分为纵向扩展和横向扩展. 纵向扩展是从单机的角度出发,通过增加系统的硬件处理能力来提升服务器的处理能力 横向扩展是通过添加机器来满足大型网站服务的处理能力. 这 ...

  3. 一次Nginx负载均衡的安装与配置

    1.环境介绍 3台linux服务器,其中两台tomcat作应用,一台nginx作两台tomcat的负载 OS:redhat 5.4   app:tomcat6  nginx:1.0.5   2.实现功 ...

  4. Linux: ------安装JDK、Tomcat、MySQL、Nginx、Tomcat负载均衡集群、Nginx负载均衡策略、MSM配置

    1.安装JDK 1.1 下载jdk # 1.下载jdkhttps://www.oracle.com/technetwork/java/javase/downloads/index.html# 2.通过 ...

  5. 【云服务器 ECS 实战】一文掌握负载均衡服务原理及配置方法

    一.负载均衡基本原理概述 协议/端口 轮询策略 会话保持 二.云服务器 ECS 负载均衡相关配置 协议&监听配置 后端服务器配置 健康检查配置 测试 在上期文章中,介绍了负载均衡的概述及优势, ...

  6. LVS负载均衡调度原理及配置方法

    Ref 参考写在前面,基本都是把需要的重点用自己的话摘抄下来方便自己以后看懂,原文写的更好. https://www.kancloud.cn/noahs/linux/1540462 http://ww ...

  7. Nginx 负载均衡 - linux下nginx加载配置文件异常处理,提示invalid PID number in “/run/nginx.pid“问题解决

    执行 nginx -s reload 加载配置文件的时候报错了. 提示 nginx: [error] invalid PID number "" in "/run/ngi ...

  8. linux window nginx性能,Nginx负载均衡搭建(Window与Linux)

    windows上搭建nginx负载均衡 1.准备几台http服务器软件,这里选用一台apache一台tomcat apache(windows)下载链接:https://www.apachehaus. ...

  9. 负载均衡解析与Nginx实战

    1. 负载均衡的概念 1.1 什么是负载均衡 Load Balancing,即负载均衡,是一种计算机技术,用来在多个计算机(计算机集群).网络连接.CPU.磁盘驱动器或其他资源中分配负载,以达到最优化 ...

  10. 宝塔Nginx负载均衡

    宝塔Nginx负载均衡 注意点: 配置了负载均衡后,前端没有分配服务器,先检查后端服务器的端口是否被放行 在站点的配置文件中添加多个后端服务器 upstream myschool {server 12 ...

最新文章

  1. Redis源码解析——字典基本操作
  2. 流量控制与可靠传输机制
  3. Java后端,应该日常翻看的中文技术网站
  4. 打开高效文本编辑之门_Linux sed之模式空间与保留空间
  5. DM8168的McSPI/McASP/McBSP接口
  6. Android localsocket 的基础和使用实践: 01
  7. 乱码385b1b926a38153d38957556c0dc55b5
  8. struts2 国际化 cookie保存语言, 下次访问时显示当前设置的语言
  9. msfconsole的简单使用
  10. LOGO特训营 第六节 字体设计实操(矩形钢笔造字)
  11. bootstrap 滚动 进度条_Bootstrap中的进度条
  12. Git版本控制管理——储藏和引用日志
  13. linux 汇编 `.eabi_attribute',交叉编译arm-none-eabi-gcc编译汇编文件(startup_stm32f10x_hd.S)遇到的有关问题(2)...
  14. linux中的clock shew 问题的解决方法
  15. Android Pixel手机Notification小图标显示白方块问题
  16. Keras.layers.BatchNormalization的批归一化方法
  17. 虹科Automation softPLC | 虹科KPA MoDK运行环境与搭建步骤(2)——MoDK运行环境搭建
  18. 计算机按键的功能介绍时间,计算器的日期键是什么
  19. 【蓝桥杯】——键盘是使用
  20. 2017面向对象程序设计(Java)第十五周学习总结

热门文章

  1. monty python喜剧-如何评价英国喜剧团体 Monty Python?
  2. python简单发音-Python如何实现文本转语音
  3. 8_Markdown和LaTex的使用中的一些小技巧
  4. LeetCode Populating Next Right Pointers in Each Node II(dfs)
  5. 题目1203:IP地址
  6. ELFHash的理解
  7. Vue04 -- 计算属性用法(v-for的筛选排序)
  8. Go 初体验 - 令人惊叹的语法 - defer.3 - defer 函数参数计算时机
  9. 20180316 代码错题(1)
  10. Linq查询语法(2)