Appearance
总结
配置结构
- 全局块
- 指定运行的用户;
- worker进程的数量 worker_processes auto;
- 日式格式 error_log logs/error.log notice;
- event块
- 客户端和服务端之间网络连接的一些配置,例如
- worker_connections 1024;
- 网络IO模型;
- http块(主要修改的地方)
- 虚拟主机(也叫server块)
- 可以包含多个,每个域名匹配一个server块;
- 也可以include servers/*来包含多个;
- 用location来配置域名对应的路径,"/"是匹配根目录;
- 如果uri包含正则表达式,则必须要有“~或者~*”标识
- 四种通配符的匹配
- = 是严格匹配,具有最高的优先级,其次是正则表达式匹配;
- ~ 是包含正则表达式区分大小写;
- ~* 是包含正则表达式不区分大小写;
- ^~ 不含正则表达式,找到第一个请求字符串匹配度最高的location;
- 例如:location ~ /edu/ {}
- 每个location设置一个root /data/,也可以设置一个全局默认的;
- 静态资源分为html和图片、css、js等资源,配置这些的过期时间expires 3d;
- 反向代理
- proxy_pass在location中使用;
- upstream servername {server ip:port;}
- upstream写在http块里面;
- 负载均衡
- 4种分配策略
- 默认是轮询
- 权重weight越高,被分配的几率越高,一般给性能好的服务权重配高,每个后端服务地址后面配置一个weight=n;
- 按请求的ip哈希,每个客户端固定一个后端服务器,和后端服务地址同一层,只需配置一个ip_hash;
- 按后端服务的响应时间来分配,响应快的优先,只需配置一个fair;
- 4种分配策略
- 虚拟主机(也叫server块)
问题
- nginx的四层和七层负载指的是什么?
- 学习Nginx这一篇就够了
- nginx官网
- 思维导图 例子
- 思维导图 问题
- 思维导图 nginx启动代码流程图
nginx原理
优点:
- 占内存少,并发能力强;
- nginx和redis类似,都是采用io多路复用机制;
- master->worker的进程工作模型,每个worker都是一个独立的进程,每个进程里只有一个主线程,采用异步非阻塞的方式来处理请求;
- 每个worker的一个线程可以把一个cpu的性能发挥极致,worker的数量和cpu数量相等最合适,auto就行;
启动流程
- 解析命令行中的参数
- 初始化日志,初始化全局变量
- 创建多个子进程,进行进程循环
- 事件处理,延迟队列,设置事件回调;