2018-02-04
Nginx基础原理
[TOC]
1.概念
面向性能设计的Http服务器,内存占用少,稳定性高,也是轻量级的网页服务器/反向代理服务器/电子邮件代理服务器等
Nginx单独使用足以支撑5W的并发连接,可以作为负载均衡的入口,根据使用情况来分发给不同的tomcat
百度、京东、新浪、网易、腾讯、淘宝等都在使用Nginx
2.组成
Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
Nginx的模块从结构上分为核心模块、基础模块和第三方模块:
核心模块:HTTP模块、EVENT模块和MAIL模块
基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块,
第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。
用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大。
Nginx原理和优化:https://www.cnblogs.com/linguoguo/p/5511293.html(很棒的文章)
3.作用
- 反向代理:位于原始服务器后面,客户端访问原始服务器后,原始服务器会去反向代理服务器获取需要的资源(服务器端)
- 正向代理:位于客户端和原始服务器之间,客户端请求该代理服务器,该代理服务器再去访问原始服务器,响应原路返回(客户端,局域网访问网络)
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
正向代理还可以使用缓冲特性减少网络使用率。
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。
反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
- 负载均衡:Nginx最常用的功能之一,将工作分摊多个操作单元上执行,需要反向代理跳转到负载均衡
- HTTP服务器:Nginx本身就是静态资源服务器,Nginx可以很方便的实现动静分离
动静分离: nginx还可以对数据进行压缩,对一些图片、html、css、js等文件进行缓存、从而实现动静分离等等优化功能,在网站做优化的时候非常的有用。
- 所谓的动静分离,可以理解为我们完全可以将动态的请求都交给tomcat处理,静态的请求都交给nginx来处理,这是非常容易做到的事情。
Nginx基础功能和工作原理:https://blog.csdn.net/wy757510722/article/details/75267431(很棒的文章)
(待更新)
4.Nginx配置详细清单
- server 配置静态资源 端口或者域名区分
- proxy_pass 配置反向代理
- upstream 配置负载均衡及权重
端口版:http://www.cnblogs.com/dancesir/p/9253043.html
集群搭建:https://blog.csdn.net/u012453843/article/details/69664821
5.Nginx负载均衡策略
对于单独的Nginx而言,通过Nginx服务器搭建Tomcat等服务器集群(可以设置权重)可以提高基础的并发
6.Keepalived结合Nginx实现高可用
- Keepalived绑定Nginx主从服务器的健康状态,备份服务器通过心跳机制检测主服务器是否ok(心跳包)
- Keepalived可以绑定vip(Virtual IP Address)动态绑定虚拟IP,在谁身上就用谁(一般发到主服务器)
- 主服务器宕机的时候,备份服务器会和keepalived绑定(主服务器起来后重新获得vip)
Keepalived结合高可用使用:https://blog.csdn.net/u012453843/article/details/69668663
7.负载均衡策略
当并发超过Nginx上限的处理(应用层)
7-1.F5硬负载(4层分发)
(经费充足)如果并发超过5W,可以处理硬负载并发问题(从传输层开始处理,效果更好)
7-2.LVS(Linux Virtual Server)(4层分发)
(经济实惠)实现硬负载60%的性能
7-3.使用阿里云服务器均衡负载SLB
8.Keepalived结合LVS实现高可用
(类似Keepalived和Nginx的高可用)