nginx是什么
# nginx是什么
nginx可以作为HTTP服务器,也可以作为反向代理服务器。
就是单Master多Worker架构,想象一个物流中心:Master进程是总指挥,读取nginx.conf配置管理worker, Worker进程是工人,数量对应CPU核数,每个Worker单线程却能处理上万个请求,背后是事件驱动模型,用异步非阻塞机制,让一个线程同时管理数千连接,让一个线程同时管理数千连接,彻底解决性能难题,Worker进程共享监听端口的设计,当你在浏览器输入URL时,操作系统通过SO_REUSEPORT参数,把请求随机分配给任意Worker,即使某个Worker崩溃,其他进程照常运转,这就是高可用的核心秘密。Master进程负责接收请求,Worker进程负责处理请求。
- 事件驱动模型
- 异步非阻塞IO
- 进程间共享监听端口
三大核心模块:
- 反向代理如同智能路由路,对外暴露统一域名,背后自动轮询10台服务器,实现负载均衡。负载均衡实现了请求分发,实现了高可用,实现了高并发。
- 负载均衡算法库自带加权轮询,IP哈希等七种策略,轻松应对秒杀场景
- Proxy Cache把热点数据缓存到磁盘,下次同样请求直接返回本地文件,响应速度提升10倍
共享内存机制解决了分布式限流难题:所有Woker共用计数内存,说好每秒限流1000次,就不会出现单个进程放行999次的漏洞
动静分离:把图片视频交给Nginx处理,把动态请求交给Tomcat处理,实现了动静分离,提高了响应速度。
动态请求才找后端,带宽成本立减70%。
当你更新配置时,Master会启动新Worker接管流量,旧Worker完成现有请求才退出,这叫优雅重启。
加上lua脚本的扩展能力,轻松实现鉴权,改写响应等自定义逻辑。
Nginx能扛住5万QPS,这是它的核心竞争力。
单节点宕机,只需要keep alived+VIP组成双机热备,实现了高可用。 服务器总在流量高峰崩溃,微服务接口分散难以管理,CDN费用居高不下,一定要想到Nginx。