Nginx的作用、负载均衡策略、配置文件详细注释
一、前言
现在很多公司都会用到Nginx
,那么你有没有想过,到底什么是Nginx
呢?Nginx
到底有什么作用呢?为什么我们要用它呢?
二、什么是Nginx
Nginx
是一款高性能、轻量级的Web
服务器/反向代理服务器及电子邮件(IMAP/POP3
)代理服务器。
其特点是占有内存少,并发能力强。
三、Nginx的作用
1.反向代理
反向代理是代理服务器的一种。服务器根据客户端的请求,从其关联的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器集群的存在。
2.动态与静态分离
Nginx
可以将请求分开,因此可以利用这点将动态请求与静态请求分离开来。这样把静态资源部署在Nginx
服务器上,把后端代码部署在tomcat等容器上,这样就可以实现动态与静态分离。
3.负载均衡
因为Nginx
具有反向代理的能力,因此Nginx
可以将数据流量按照一定规则分摊到多个服务器执行,从而减轻每台服务器的压力,多台服务器(集群形式)共同完成工作任务,从而提高了数据的吞吐量。
Nginx的负载均衡策略:
参数 | 说明 |
---|---|
不写任何参数 | 默认轮询 |
weight | 权重 |
ip_hash | 依据ip分配 |
least_conn | 最少连接 |
url_hash(第三方) | 依据URL分配 |
air(第三方) | 响应时间 |
负载均衡节点有如下可选参数:
参数 | 说明 |
---|---|
fail_timeout | 与max_fails 结合使用(默认为10s ) |
max_fails | 在fail_timeout 参数设置的时间内如果失败次数达到max_fails ,Nginx 就认为服务器不可用 (默认为1 ) |
backup | 标记该服务器为备用服务器。当主服务器停止时,请求会被发送到这里 |
down | 标记服务器永久停机了 |
Nginx
基于连接探测,max_fails
设定Nginx
与服务器节点通信的尝试失败次数。在fail_timeout
参数定义的时间段内,失败的次数达到max_fails
设定的值,Nginx
就认为该服务器节点不可用,将请求根据策略转到其他可用服务器节点上去。在下一个fail_timeout
时间周期内,该服务器节点不会再被尝试,等到下下个fail_timeout
时间周期才会被尝试。注意这里fail_timeout
有双重意义。
max_fails
失败的尝试次数默认是1。设为0就会停止统计尝试次数,认为服务器是一直可用的。可以通过指令