Nginx简介
免费开源web服务,反向代理服务器,负载均衡服务器
正向代理
- 客户端非常明确要访问的服务器地址
- 服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端
- 正向代理模式隐藏了真实客户端信息
反向代理
- 将请求按照一定的规则分发给后端的业务处理服务器
- 请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了
- 反向代理隐藏了服务器的信息
负载均衡
- 将请求按照一定的规则(负载均衡)分发给后端的业务处理服务器
负载均衡规则
- weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
- ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
- fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块
- url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包
Nginx-特性
- 高性能、高稳定
- 模块化设计、较好的扩展性
- 热部署,不停服务更新配置文件、更换日志、更新服务器程序版本
- 资源占用少、低内存消耗
Nginx-基本架构
运行模式:master-worker工作模式(多进程模式)
- master进程:主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程
- worker进程:工作进程,用来处理请求
热部署( ./nginx -s reload):
- 执行命令时,我们是启动一个新的nginx进程,而新的nginx进程在解析到reload参数后,就知道我们的目的是控制nginx来重新加载配置文件了,它会向master进程发送信号,master进程在接到信号后,向所有老的worker进程发送信号,告诉他们可以光荣退休了。新的worker在启动后,就开始接收新的请求,而老的worker在收到来自master的信号后,就不再接收新的请求,并且在当前进程中的所有未处理完的请求处理完成后,再退出
Nginx配置
main # 全局配置
events { # nginx工作模式配置
}
http { # http设置
....
upstream name { # 负载均衡配置
....
}
server { # 服务器主机配置
....
location { # 路由配置
....
}
}
}
Nginx性能相关参数
1、工作进程数 2、单个工作进程最大文件句柄数 3、单个工作进程最大连接数 4、压缩 5、缓存