一、upstream模块
1.调度算法[控制分发请求到后端]
1)轮询:请求逐一分配到后端服务器(默认)
2)加权轮询:配置weight,weight值越高,分配到的访问几率越高
3)ip_hash:相同IP固定访问一个后端服务器
4)url_hash:按照访问URL的hash结果来分配请求,使每个URL定向到同一个后端服务器
5)least_conn:最少链接数,那个连接数少就分发给给谁
2.后端服务状态[控制是否分发到后端]
1)down:不参与调度
2)backup:当其他server挂掉后,backup的server才会参与调度
二、四层转发和七层转发
1.区别
1)四层转发在传输层进行转发 IP+端口
2)七层转发在应用层进行转发 域名
2.选择
1)选四层:
只要简单转发(如数据库、SSH)
追求极致性能
协议不是HTTP(如游戏、自定义TCP协议)
2)选七层:
需要智能路由(微服务、多网站)
需要安全防护(WAF、防爬虫)
需要高级功能(缓存、压缩、灰度发布)
3.nginx部署位置
1)七层:写入http模块内
2)四层:写入stream模块内
三、Rewrite实现url地址重写、重定向[常用于状态码跳转]
1.参数及作用
| 场景 | rewrite 指令是否结束 | location 是否继续执行 | 是否重新匹配location |
|---|---|---|---|
| 没有标志 | 结束 | 继续 | 不重新匹配 |
| break | 结束 | 继续 | 不重新匹配 |
| last | 结束 | 停止 | 重新匹配 |
| redirect | 结束 | 停止 | 直接返回响应 |
| permanent | 结束 | 停止 | 直接返回响应 |
浙公网安备 33010602011771号