Nginx
- HTTP 和 反向代理web服务器
- epoll
- 占用少的系统资源、支持更多的并发连接
- 负载均衡
- 安装简单、配置灵活
- 热部署、启动快、不间断服务情况下对软件配置进行升级
反向代理
- 反向代理 客户端-> 代理<->服务器
- Nginx 没有自己的地址,它的地址就是服务器的地址
- Nginx 明确知道应该要去哪个服务器获取数据
- 正向代理 客户端 <-> 代理->服务器
- 客户端明确访问的服务器的地址,屏蔽真实客户端信息
正反向代理使用场景
- 正向代理 客户端明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体客户端;屏蔽真实的客户端信息;代理的是客户端
- 访问无法访问的资源
- 缓存、加速访问资源
- 对客户端授权访问、上网认证
- 代理可以记录用户访问记录、对外隐藏用户信息
- 反向代理 代理的是服务端;对外隐藏服务器的信息
- 内网安全,反向代理作为公网访问地址,web服务器是内网
- 负载均衡
- 在实际场景中正向代理和反向代理可能在同一个应用场景中,正向代理代理客户端访问目标服务器,目标服务器是一个反向代理服务器,反向代理了多台真实的业务处理服务器
热部署
- nginx支持热加载 热部署,在不打断用户请求的情况下更新版本
- nginx 内部进程主要有俩类,master进程 worker进程(多个)
- worker进程才是真正working进程,worker进程全部都是master进程的子进程,worker是以普通用户身份进行运行的,被劫持也不会有管理员权限
- nginx 热部署与其并发模型存在密不可分的关系,因为master进程的关系,通知nginx重新读取配置文件时,master会进行语法错误的判断,如果存在语法错误的话,返回错误,不进行装载;配置文件无语法错误,则nginx也不会将新配置调整到所有worker中。而是先不改变已经建立连接的worker,等待worker将所有请求结束之后,在旧配置喜爱启动的worker kill,在使用新的配置创建新的worker
- cp 拷贝nginx旧版本二进制文件
- cp -f 替换二进制文件
- ps -ef 查看进程
- kill -usr2 旧版本主进程号 旧版本worker进程不再接受请求
- kill -winch 旧版本主进程号 关闭旧版本worker进程
- cp 拷贝旧进程二进制文件 覆盖 实现回退
- kill -hup 旧版本进程号,拉起旧版进程
负载均衡
- 硬件负载均衡(F5),软件负载均衡(消息队列分发机制)
- weight 轮询,接收到的请求按照顺序,逐一分配到不同的后端服务器,在使用过程中,某一台服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到影响,在这种方式下,可以给不同的后端服务器设置一个权重值,用于调整不同服务器上请求的分配率,权重数据越大,被分配到请求的几率越大,主要根据机器性能进行配置的
- ip-hash 每个请求按照发起客户端的ip hash结果进行匹配,下一个固定ip地址的客户端就会访问到同一个后端服务器,集群部署下session共享的问题
- fair 智能调整算法,动态根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,处理效率低的服务器分配到的请求少,默认不支持,需要upstream-fair模块
- url-hash 按照访问的url hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx做为静态服务器的情况下提高缓存效率,需要安装nginx的hash包
nginx 的基础知识(一)
原文:https://www.cnblogs.com/jianzihao/p/14805893.html