反向代理

概念:将前端发送的动态请求由 nginx 转发到后端服务器

在nginx.conf文件中配置:(以下代码会将前端请求中的 /api/ 改为 http://localhost:8080/admin/ 后,将/api/后面的url拼接到 http://localhost:8080/admin/ 后面)

1
2
3
4
5
6
7
8
server{
listen 80;
server_name localhost;

location /api/ {
proxy_pass http://localhost:8080/admin/; # 反向代理
}
}

好处:

  • 提高访问速度:nginx服务器可以缓存后端服务器响应的数据,当前端发送相同请求时,nginx可以不用再次请求后端
  • 进行负载均衡:当前端发送大量请求时,nginx可以将请求分发给多个服务器,多个服务器处理这些请求,以减少单个服务器的压力
  • 保证后端服务安全:当后端服务器部署在公司内网时,前端无法将请求发送给后端,此时可以让nginx服务器作为公司内网唯一和外网连接的入口。

负载均衡

概念:当前端发送大量请求时,nginx可以将请求分发给多个服务器,多个服务器处理这些请求,以减少单个服务器的压力

以下代码在nginx.conf文件中配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
upstream webservers{
server 192.168.100.128:8080;
server 192.168.100.129:8080;
}

server{
listen 80;
server_name localhost;

location /api/ {
# webservers 可以自定义,只需要和上面保持一致
proxy_pass http://webservers/admin/;#负载均衡
}
}

nginx 负载均衡策略

名称 说明
轮询 默认方式
weight 权重方式,默认为1,权重越高,被分配的客户端请求就越多
ip_hash 依据ip分配方式,这样每个访客可以固定访问一个后端服务
least_conn 依据最少连接方式,把请求优先分配给连接数少的后端服务
url_hash 依据url分配方式,这样相同的url会被分配到同一个后端服务
fair 依据响应时间方式,响应时间短的服务将会被优先分配