1 、什么是Nginx
Nginx(engine x)是一个高性能HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务 --来自百度百科
主要功能反向代理
通过配置文件可以实现集群和负载均衡
静态资源虚拟化
2、常见的服务器
MS IIS asp.net
Weblogic、Jboss 传统行业 ERP/物流/电信/金融
Tomcat、Jetty J2EE
Apache、Nginx 静态服务、反向代理
Netty 高性能服务器编程
3、什么是正向代理
1) 客户端请求目标服务器之间的一个代理服务器
2) 请求会先经过代理服务器,然后再转发请求到目标服务器,获得内容后最后响应给客户端
4、什么是反向代理
用户请求目标服务器,由代理服务器决定访问哪个IP
5、Nginx的进程模型
master进程: 主进程。master进程管理这工作进程,相当于老板管理这员工; master进程监控这worker进程,当worker进程异常退出,master重新启动一个新的worker进程。
worker进程: 工作进程。worker进程是为master进程服务的。
如下图所示:
信号: 由master进程传递给worker进程
./nginx -s stop
./nginx -s quit
./nginx -s reload
./nginx -t
修改工作进程数量为2个
vi nginx.conf
worker_processes 2
检查修改的配置文件是否正确 ../sbin/nginx -t
重新加载nginx ../sbin/nginx -s reload,可以看到有两个工作进程 ps -ef| grep nginx
进程模型如下图所示:
多进程的模式优点: 进程之间是相互独立的,一个worker进程退出,其它进程还能正常工作。
6、Nginx处理web请求机制
Worker抢占机制:
假设如下图所示有三个工作进程,一个Client(处理请求),当一个web请求进入nginx后,这里有三个worker,由哪个worker去处理呢? 这里有一个accept_mutex 互斥锁,和Client是对应的。哪个worker抢到了互斥锁,就由哪个worker来处理。
如下图:由worker1抢到了互斥锁,那么worker1就和client建立了联系。worker1对请求进行读取,解析,和响应。将数据返回给客户端,这样请求就结束了。
事件处理
传统服务器事件处理
当Client1和worker1阻塞后,Client2和Client3只能等待了。 可以再建一个worker2来处理Client2和Client3.
Nginx事件处理(类似于多路复用器模式)
Nginx使用异步非阻塞模式,底层使用了linux的epoll模型,当Client1,Client2和worker阻塞后,clent3和worker1还能正常处理。
配置worker的最大连接数
events { # 默认使用epoll use epoll; # 每个worker允许连接的客户端最大连接数 worker_connections 10240; }
7、nginx.conf 配置结构
1) main :全局配置
2) event :配置工作模式以及连接数
3) http: http 模块相关配置
3.1) server 虚拟主机配置,可以有多个
3.1.1) location 路由规则,表达式
3.1.2) upstream 集群,内网服务器
8、Nginx模块
9、四层、七层与DNS负载均衡
1) 四层负载均衡
F5 硬负载均衡
LVS 四层负载均衡
Haproxy四层负载均衡
Nginx 四层负载均衡 1.9版本以后
2) 七层负载均衡
Nginx 七层负载均衡
Haproxy 七层负载均衡
apache 七层负载均衡
3) DNS地域负载均衡