文章目录
- 一、介绍
- 二、好处
- 三、反向代理和负载均衡
- 3.1 nginx 反向代理的配置方式
- 3.2 nginx 负载均衡的配置方式:
一、介绍
nginx 反向代理:
就是将前端发送的动态请求由 nginx 转发到后端服务器
二、好处
nginx 反向代理的好处:
-
提高访问速度
因为nginx本身可以进行缓存,如果访问的同一接口,并且做了数据缓存,nginx就直接可把数据返回,不需要真正地访问服务端,从而提高访问速度。
-
进行负载均衡
所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。
-
保证后端服务安全
因为一般后台服务地址不会暴露,所以使用浏览器不能直接访问,可以把nginx作为请求访问的入口,请求到达nginx后转发到具体的服务中,从而保证后端服务的安全。
三、反向代理和负载均衡
3.1 nginx 反向代理的配置方式
文件:nginx\conf\nginx.conf
server{listen 80;server_name localhost;location /api/{proxy_pass http://localhost:8080/admin/; #反向代理}
}
proxy_pass
:该指令是用来设置代理服务器的地址,可以是主机名称,IP地址加端口号等形式。
以上配置的含义是:
- 监听80端口号,当我们访问前端地址(
http://localhost:80/api/../..
)这样的接口时,就会通过location /api/
进行反向代理到 后端服务器地址(http://localhost:8080/admin/
)
通过更换前端的地址前缀,为服务器地址,拼接后缀接口路径,由此访问地址一致,实现前后端连接。
举例:
当在访问前端
http://localhost/api/employee/login
,nginx接收到请求后转到http://localhost:8080/admin/
,故最终的请求地址为http://localhost:8080/admin/employee/login
,和后台服务的访问地址一致。
3.2 nginx 负载均衡的配置方式:
- 当如果服务以集群的方式进行部署时,那nginx在转发请求到服务器时就需要做相应的负载均衡。
- 其实,负载均衡从本质上来说也是基于反向代理来实现的,最终都是转发请求。
upstream webservers{server 192.168.100.128:8080;server 192.168.100.129:8080;
}
server{listen 80;server_name localhost;location /api/{proxy_pass http://webservers/admin;#负载均衡}
}
upstream
:如果代理服务器是一组服务器的话,我们可以使用upstream指令配置后端服务器组。
以上代码含义:
- 监听80端口号, 然后当我们访问
http://localhost:80/api/../..
这样的接口的时候,它会通过location /api/ {}
这样的反向代理到http://webservers/admin
,根据webservers名称找到一组服务器,根据设置的负载均衡策略(默认是轮询)转发到具体的服务器。注:upstream后面的名称可自定义,但要上下保持一致。
nginx 负载均衡策略:
名称 | 说明 |
---|---|
轮询 | 默认方式 |
weight | 权重方式,默认为1,权重越高,被分配的客户端请求就越多 |
ip_hash | 依据ip分配方式,这样每个访客可以固定访问一个后端服务 |
least_conn | 依据最少连接方式,把请求优先分配给连接数少的后端服务 |
url_hash | 依据url分配方式,这样相同的url会被分配到同一个后端服务 |
fair | 依据响应时间方式,响应时间短的服务将会被优先分配 |