一、场景
前端将请求发送给nginx,nginx将请求再转发给网关,网关再将请求转发至对应服务。由于网关会部署在多台服务器上,因此nginx需要负载均衡给网关发请求。nginx所有配置均参照官方文档nginx开发文档,可参考负载均衡板块内容
二、具体实现步骤
1、修改nginx.conf
和default.conf
配置文件
说明:这两个配置文件时nginx的重要配置文件,请求的转发均在该配置文件内实现
nginx.conf
配置文件:
配置说明:该处配置网关所在地址和端口,如果网关部署在多台服务器上,该配置需要新增服务器地址
default.con
配置文件
配置说明:
1、第一处配置:前端会给nginx发送请求,该配置用于nginx监听前端给该服务器80端口发送请求。相当于请求断言
2、第二处配置:当前端发送
/
请求后,会将请求转发到nginx.conf
配置中gulimall配置的地址,即网关所在地址。nginx发送请求时会丢掉很多请求头中的信息,因此需要配置proxy_set_header来让nginx发送请求时携带host参数,参数值为当前请求host参数
2、修改网关服务配置
说明:通过上述配置,当前端给nginx发送http://http://192.168.195.131/
请求时,nginx监听到后,会将请求转发给网关。接下来网关需要将该请求转发至对应服务
bash
- id: gulimall_host
uri: lb://gilimall-product
predicates:
- Host=**.192.168.195.131
说明:nginx发送请求时,会携带host参数(可在前端页面请求体中看到),当请求中写道host参数后,网关将请求转发至对应服务(这里是商品服务)