未完,待填坑
根据陶辉老师的《nginx核心知识100讲》整理的学习笔记,方便温故知新
1. nginx介绍
由大神Igor开源的高性能的HTTP和反向代理web服务器,官网 ,竞品apache。
诞生背景
- 世纪初互联网快速普及,数据量爆炸式增长,相应的对硬件要求更高
- 摩尔定律在单核CPU上失效,单核CPU性能提升有限,开始多核CPU。但大量的软件并未做好针对多核CPU的优化,如apache
- apache较为低效,一个连接对应一个进程,面对上百万个请求时无法开数百万个进程进行切换,而nginx异步请求,抗并发,快速蚕食市场。
优点
- 高并发,高性能
- 可扩展性好
- 高可靠性
- 热部署
- BSD许可证
nginx的组成
- nginx二进制可执行文件 由各模块源码编译出的一个文件
- nginx.conf 配置文件 控制nginx的行为
- access.log 访问日志 记录每一条http请求的信息
- error.log 错误日志 定位问题
里程碑
- 2004年第一个版本0.1.0
- 2005年重构反向代理
- 2011年支持上游keepalive http长连接,同时商业公司成立
- 2013年支持websocket协议
- 2015年支持thread pool,提供stream四层反向代理,支持http2协议
- 2016年支持动态模块
- 2018年支持TLSv1.3
适用场景
静态资源服务
css、图片等静态资源可直接放到nginx中,提升用户体验
反向代理服务
上游有很多应用服务组成集群,nginx反向代理,将请求转发给应用,而集群需要动态扩容和容灾,因此要具备负载均衡能力。
nginx位于靠近用户的边缘节点,随着应用增多,网络时延增大,因此需要nginx将一段时间内不变的数据缓存,提升用户体验。
API服务
数据库服务的TPS远高于应用,openresty、lua等融合nginx将直接从数据库获取数据给用户,提升用户体验。