Nginx.conf--(负载均衡) 基本配置说明
一、正向代理
概念
位于客户端与原始服务器之间的服务器,为了获取原始服务器数据,客户端向代理服务器发送请求并指定请求目标(原始服务器),然后代理服务器接收请求并转换给原始服务器,并将响应数据返回客户端。
正向代理是客户端使用的,对客户端进行代理,客户端知道并主动使用代理
作用
- 访问原来无法访问的资源,FQ
- 可以做缓存,加速资源的访问
- 对客户端上网进行认证授权
- 上网行为管理,记录用户访问记录
二、反向代理服务器
概念
客户端发送请求到服务器(客户端认为是原始服务器,实际上是一台反向服务器),反向代理服务器接收请求并将请求转发给内部网络中的多台集群服务器,并装饰响应的数据返回给客户端
反射代理一般用于服务器集群,分布式等,实现负载均衡
作用
- 负载均衡,提高处理和响应速度
- 保证内网的安全,隐藏服务器的信息,防止
web
攻击
配置
使用Nginx作为其他服务器
步骤
1.创建虚拟主机配置文件,并配置反向代理
1 | #cd /etc/nginx/conf.d/ |
重启服务nginx -s reload
2.配置域名解析**
3、访问:可直接通过www.taocat.com 访问http://192.168.1.66:8080
三、负载均衡
1.概念
反向代理服务器将接收到的请求按照一定的规则分发到不同的服务器进行处理,从而提高系统响应和处理速度,称为负载均衡
2.配置
1 | #vi /proxy.conf |
3.访问
1 | 默认轮循 |
四、Nginx服务器之负载均衡策略
负载均衡用于从upstream
模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream
模块是这样的,模块内的server
是服务器列表:
1 | **#动态服务器组** |
**在upstream
模块配置完成后,要让指定的访问反向代理到服务器列表:
1 | #其他页面反向代理到tomcat容器** |
这就是最基本的负载均衡实例,但这不足以满足实际需求;目前Nginx服务器的upstream
模块支持6种方式的分配:
1、轮询
最基本的配置方法,上面的例子就是轮询的方式,它是upstream
模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。
有如下参数:
注意:
在轮询中,如果服务器down掉了,会自动剔除该服务器。
缺省配置就是轮询策略。
此策略适合服务器配置相当,无状态且短平快的服务使用。
1
2
3
4
5
6upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## 2、weight
**权重方式,在轮询策略的基础上指定轮询的几率。例子如下:**
```nginx
#动态服务器组
upstream dynamic_zuoyu {
server localhost:8080 weight=2; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082 backup; #tomcat 8.5
server localhost:8083 max_fails=3 fail_timeout=20s; #tomcat 9.0
}
在该例子中,weight参数用于指定轮询机率,weight的默认值为1,;weight的数值与访问比率成正比,比如Tomcat 7.0被访问的机率为其他服务器的两倍。
注意:
- 权重越高分配到需要处理的请求越多。
- 此策略可以与
least_conn
和ip_hash
结合使用。 - 此策略比较适合服务器的硬件配置差别比较大的情况。
3、ip_hash
指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
1 | #动态服务器组 |
注意:
- 在
nginx
版本1.3.1
之前,不能在ip_hash
中使用权重(weight)
。 ip_hash
不能与backup
同时使用。- 此策略适合有状态服务,比如
session
。 - 当有服务器需要剔除,必须手动
down
掉。
4、least_conn
把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。
1 | #动态服务器组 |
}
注意:
- 此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。
5.第三方策略
第三方的负载均衡策略的实现需要安装第三方插件。
1. fair
按照服务器端的响应时间来分配请求,响应时间短的优先分配。
1 | 动态服务器组 |
2. url_hash
按访问url
的hash
结果来分配请求,使每个url
定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash
,可以使得同一个url
(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。
1 | #动态服务器组 |
五、动静分离
问题
tomcat在处理静态资源时效率不高,默认情况下所有资源都由tomcat处理,会导致web应用响应慢,占用系统资源**
解决
- 将静态资源交由
Nginx
处理,动态资源仍由tomcat
处理,实现动静分离。 - 实际上就把
Nginx
作为静态资源服务器
配置
编辑虚拟主机配置文件
1 | vi taobao.conf |
六、高并发处理
- 负载均衡:集群
- 动静分离:使用
Nginx
、cdn
- 缓存:以空间换时间,提高系统效率
- 限流:流量控制
- 降级:服务降载