1、Nginx如何做到热部署?
热部署,就是配置文件nginx.conf修改后,不需要stop Nginx,不需要中断请求,就能让配置文件生效!(nginx -s reload 重新加载/nginx -t检查配置/nginx -s stop)
首先我们要知道nginx的master-worker模式
启动Nginx后,就是在80端口启动了Socket服务进行监听,worker进程负责处理具体的请求,那么如果想达到热部署的效果,那就有以下两种方式:
①修改配置文件nginx.conf后,主进程master负责推送给woker进程更新配置信息,woker进程收到信息后,更新进程内部的线程信息。
②修改配置文件nginx.conf后,重新生成新的worker进程,当然会以新的配置进行处理请求,而且新的请求必须都交给新的worker进程,至于老的worker进程,等把那些以前的请求处理完毕后,kill掉即可。实际生产中就是以该种方式进行热部署的。
2、Nginx如何做到高并发下的高效处理?
Nginx的worker进程个数会与CPU绑定、worker进程内部包含一个线程高效回环处理请求,这的确有助于效率,但这是不够的。高并发的方式有异步/同步、阻塞/非阻塞......但是要同时处理那么多的请求,要知道,有的请求需要发生IO,可能需要很长时间,如果等着它,就会拖慢worker的处理速度。
Nginx采用了Linux的epoll模型,epoll模型基于事件驱动机制,它可以监控多个事件是否准备完毕,如果OK,那么放入epoll队列中,这个过程是异步的。worker只需要从epoll队列循环处理即可。
3、Nginx挂了怎么办?
高可用!!!
Keepalived是一个高可用解决方案,主要是用来防止服务器单点发生故障,可以通过和Nginx配合来实现Web服务的高可用。Keepalived+Nginx实现高可用的思路:
①请求不要直接打到Nginx上,应该先通过Keepalived(这就是所谓虚拟IP,VIP)
②Keepalived应该能监控Nginx的生命状态(提供一个用户自定义的脚本,定期检查Nginx进程状态,进行权重变化,,从而实现Nginx故障切换)
4、正向代理
5、反向代理
6、Nginx限流
Nginx官方版本限制IP的连接和并发分别有两个模块:
① limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 “leaky bucket”。
② limit_req_conn 用来限制同一时间连接数,即并发限制。