nginx轻量级的静态资源web服务器 支持高并发
特点: 更快 高扩展 高可靠 低内存消耗 支持高并发(单机nginx支持10万个并发数) 支持热部署 更自由的协议
反向代理
从代理角度来说,正向代理是说代理的客户端,反向代理代理的是服务端
负载均衡
Load Balance 就是指将工作任务进行平衡、分摊到多个操作单元上进行运行。
动静分离
是指在web服务器中,将静态页面和动态页面或者静态内容接口和动态内容接口分开不同系统访问的设计方法,以提高可维护性和性能
nginx常用命令
启动命令
默认启动会加载conf下的nginx.conf文件 -c参数可以指定配置文件启动
停止命令
Kill -信号量 master进程编码 信号量有quit(丛容推出) term(立马推出) 9(强制推出)
重启命令
nginx虚拟主机配置
配置文件分为五大块,主要的有三大块
main块:可以设置work进程的归属用户/用户组,设置work进程的数量,设置错误日志的的输出位置和日志级别,设置master进程号存储的位置
事件块:设置单个work进程最大的连接数,设置网络io模型
http块:一个server就是一个虚拟主机(就是一个服务),每个server可以监听一个虚拟节点和端口
Location的配置规则
1.uri匹配
[图片上传失败...(image-aa99d3-1616418822574)]
默认是普通字符匹配(里边有一个最长字符匹配规则,即 / 和 /demo 访问/demo时 会匹配到/demo) 精准配置的优先级要高于普通配置 正则匹配优先级高于普通匹配
匹配优先级:精准匹配>正则匹配>普通匹配
nginx如何实现反向代理
proxy_pass 配置的是代理的服务地址(要转发的服务地址)
proxy_method 配置的是转发的提交方式
[图片上传失败...(image-6a60fb-1616418822574)]
这些配置可以让服务端拿到客户端的信息,这些信息是存储在请求头中的
nginx负载均衡
upstream块配置均衡策略
语法 upstream 块名{服务列表配置} 并在location中配置proxy_pass <u>http://upstream块名</u>
服务列表配置说明
[图片上传失败...(image-a9060e-1616419209872)]
负载策略主要有:轮询(默认的)、ip_hash、权重(通过weight指定)
nginx动静分离
动静分离
通过反向代理路径映射使访问静态资源的请求映射到静态资源所在的路径,映射路径一半采用正则匹配方式
缓存处理
针对静态资源设置过期时间
压缩处理
配置位置在http内部 和server平级
nginx默认支对text/html文件进行压缩 其他文件需要压缩 就需要手动配置
原理分析
多进程方式
多进程之间数据不共享相对安全
多线程方式
处理速度相对更快 但是存在线程安全问题
异步方式
同步非同步 是针对调用者来说
阻塞非阻塞 是针对被调用者来说
Nginx就是多进程机制和异步处理机制
有一个主进程和一个工作进程
Master:管理进程,不负责具体的业务处理,接受外界信息,向worker进程发送信号。
Worker:具体处理用户请求的,数量可以设置,一般和cpu个数一致
./sbin/nginx -c conf/nginx.conf -s reload 热部署启动
热部署原理
多个worker进程怎么分配接受的请求?
争抢方式:有一把accept mutex锁 那个worker进程抢到这把锁就执行工作
互斥锁:某个worker进程达到某个获取阀值时就放弃权利,交给其他进程去处理请求。(说的不是很明白。)
配置优化
nginx默认没有开启cpu多核处理,当配置了多了worker进程时,为了高效需要配置开启cpu多核处理。
events配置优化
accpct_mutcs off/on;就是互斥锁配置
http配置优化
Sendfile on;表示开启高效的传输方式
跨域访问
同一域名和同一域名不同不文件夹可以访问
同一域名,不同端口/不同协议/子域不同/域名对ip 都不能访问
有很多种方式可以解决跨域问题 这里只记录nginx配置方式
第一行表示放行的请求 *表示所有请求
第二行表示放行的请求方式
防盗链配置
就是针对资源做一个访问安全配置
Nginx高可用
使用keepalived服务检测多个nginx的可用性