Dawn's Blogs

分享技术 记录成长

0%

Nginx学习 (3) 设计场景之反向代理 负载均衡 动静分离

反向代理

反向代理代理的是服务器,所以用户是无感知的。用户发起请求后,由 Nginx 服务器分发请求到具体的服务器中

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 9090;
server_name _;

location /video/ {
proxy_pass http://XXX:8080;
}

location /book/ {
proxy_pass http://XXX:8081;
}
}

负载均衡

Nginx 负载均衡需要配置 upstream 组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
upstream server_pool {
server xxx:80 weight=4;
server yyy:80 weight=2;
}

server {
listen 80;
server_name _;

location / {
root html;
proxy_pass http://server_poll; # 负载均衡
index index.html index.htm;
}
}

负载均衡策略

第一种 轮询

每个请求按时间顺序逐一分配到不同的后端服务器。

第二种 weight

weight 代表权重默认为 1,权重越高被分配的客户端越多。

1
2
3
4
upstream server_pool {
server xxx:80 weight=4;
server yyy:80 weight=2;
}

第三种 ip_hash

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器。

1
2
3
4
5
upstream server_pool {
iphash;
server xxx:80;
server yyy:80;
}

第四种 第三方配置

如 fair 就是第三方配置:按后端服务器的响应时间来分配请求,响应时间短的优先分配。

1
2
3
4
5
upstream server_pool {
server xxx:80;
server yyy:80;
fair;
}

动静分离

动静分离就是把把动态跟静态请求分开。

动静分离从目前实现角度来讲大致分为两种:

  • 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案。
  • 另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开