Nginx
Nginx是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP代理服务器,以稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
Nginx基础认识
1、不支持windows,支持Linux、BSD、Unix等操作系统
2、是一个 HTTP 和反向代理服务器
3、支持负载均衡、反向代理、正向代理等功能
4、支持基本 HTTP 服务器的功能,如日志、压缩、Byte ranges、Chunked responses、SSL、虚拟主机
Nginx的工作模式
采用一个master进程和多个worker工作进程
master进程
负责管理worker进程,同时监听连接请求,当连接请求到来之后将连接放入worker进程中去处理具体的业务请求,完成下面的工作:
1)读取并验证配置信息;
2)创建、绑定及关闭套接字;
3)启动、终止 worker 进程及维护 worker 进程的个数;
4)无须中止服务而重新配置工作;
5)控制非中断式程序升级,启用新的二进制程序并在需要时回滚至老版本;
6)重新打开日志文件;
7)编译嵌入式perl脚本
worker 进程
处理具体事务的进程,每个进程只有一个主线程,这样就不会引起很多的线程切换,从而降低了系统开销,同时每个线程内部使用异步非阻塞的方式来管理描述符这样就可以管理大量的描述符,当描述符多的时候也只是会占用较多的内存而已,而不会造成占用大量cpu时间。
1)接收、传入并处理来自客户端的连接;
2)提供反向代理及过滤功能;
3)nginx任何能完成的其它任务
Nginx能够处理高并发的原因在于对socket的管理方式是异步非阻塞的,使用select/poll/epoll/kqueue 来实现对大量socket描述符的管理,每个worker进程有一个主线程,而没有其他的线程这样的好处就在于不需要进行线程间的切换,这样就节省了资源
异步非阻塞
异步的概念是和同步相对的,也就是不同事件之间不是同时发生的。非阻塞的概念是和阻塞对应的,阻塞是事件按顺序执行,每一事件都要等待上一事件的完成,而非阻塞是如果事件没有准备好,这个事件可以直接返回,过一段时间再进行处理询问,这期间可以做其他事情。
Nginx信号
Nginx 支持下表中的信号:
1)TERM,INT:快速关闭程序,终止当前正在处理的请求
2)QUIT:处理完当前请求后,关闭程序
3)HUP:重新加载配置文件,开启新的工作进程,关闭旧的工作进程,不会中断请求
4)USR1:重新打开一个log文件,用去切换日志
5)USR2:平滑升级可执行程序
6)WINCH:从容关闭工作进程
kill – XXX <pid> 来控制 Nginx,其中 XXX 就是上表中列出的信号名。