定义:高性能(请求和响应速度极高)的HTTP和反向代理的web服务器
事件处理模式:proactor,异步非阻塞
proactor流程详细可见如下博客
IO多路复用及事件处理模式_Q_Outsider的博客-CSDN博客)
NginX优缺点
-
优点(应用场景结合优点进行思考)
(1)占用内存小,请求和响应速度极快(高性能),可实现高并发连接
(2)高性能http服务器,反向代理web服务器,虚拟主机,负载均衡
(3)配置简单,反向代理隐藏真实服务器特征,例如IP地址,API接口网关,安全性高
-
缺点
处理动态页面吃力,目前普遍在前端使用nginx作为反向代理抗住压力
正向代理和反向代理
-
正向代理:客户端的代理,如VPN,作用是隐藏真实客户端。客户端向代理发送一个请求并且指定目标,然后代理向原始服务器转交请求并将获得的内容返回客户端
-
反向代理:服务器的代理,隐藏真实服务器,请求统一被Nginx接收,nginx反向代理服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理
特点:隐藏真实服务器及其特性,充当互联网云和服务器的中间层,安全性高。
负载均衡
Nginx提供的负载均衡策略有2种:内置策略(轮询)和扩展策略。
负载均衡分担服务器压力,将对台服务器组成一个集群,当用户访问时,
先访问到一个转发服务器,再由转发服务器将访问分发到压力更小的服务器。
内置策略:轮询,加权轮询,Ip hash。
扩展策略:基本啥都能做,逃~
-
轮询:每个请求根据时间依次分配到不同的服务器中
-
加权轮询(权重):依据权值分配,权值大的分配到的概率更高,考虑不同服务器性能不均衡的情况
-
iphash:客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
动静分离:在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,提高资源响应的速度。
补充 Location
根据用户的请求URL匹配执行不同的操作
解决前端跨域
- 使用Nginx转发请求。把跨域的接口写成调本域的接口,然后将这些接口转发到真正的请求地址。
限流
限制用户请求,防止服务器崩溃
- 正常限制访问频率(正常流量),使用漏桶流算法
- 突发限制访问频率(突发流量),限制请求数
- 限制并发连接数
目的: 控制数据注入到网络的速率,平滑网络上的突发流量。
具体机制:突发流量会进入到一个漏桶,漏桶会按照我们定义的速率依次处理请求,如果水流过大也就是突发流量过大就会直接溢出,则多余的请求会被拒绝。所以漏桶算法能控制数据的传输速率。



