Nginx配置负载均衡到网关
创始人
2024-05-08 15:44:27
0

Nginx配置负载均衡到网关

1.需求图示

image-20230108125053452

前置准备工作 https://blog.csdn.net/qq_44981526/article/details/128599898

2.配置实现

1.在C:\Windows\System32\drivers\etc目录下修改hosts文件

#配置llpliving.com nginx虚拟机
192.168.56.100  www.llpliving.com

2.配置nginx负载均衡,这里网关服务只有一个因此只配置了一个,如果由多个可以添加多个,默认轮询方式

#修改配置文件,配置负载均衡
vi /mydata/nginx/conf/nginx.conf
#1.配置要进行负载均衡的服务器ip和端口 llpliving由可以根据实际情况命名
#2.注意upstream上游服务器配置在http全局块中upstream llpliving{server 192.168.79.1:5050;#...}

image-20230108125853204

3.配置反向代理

# 1.拷贝default.conf 到 llpliving.conf文件
cp default.conf llpliving.conf
# 2.修改 llpliving.conf配置文件
vi llpliving.conf
或者
vi /mydata/nginx/conf/conf.d/llpliving.conf
#重启 nginx
sudo docker restart nginx

在前面配置了本机hosts解析www.llpliving.com 对应的ip 192.168.56.100(虚拟机nginx的ip)

image-20230108133412869

当浏览器访问http://www.llpliving.com/时,请求到nginx,nginx通过反向代理转发给192.168.1.79:5050网关服务,网关服务在根据路由访问对应的服务。

这里为什么会失败?

1.浏览器携带hosts信息对nginx服务发起请求,nginx进行请求转发时会丢失hosts信息,需要配置nginx让其携带hosts信息

2.浏览器以域名的方式访问nginx,nginx进行转发给网关,网关需匹配域名方式访问,让其匹配到对应的服务

image-20230108133815826

4.配置网关

server:port: 5050spring:application:name: llpliving-gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:routes:#比如请求地址为 http://localhost:5050/api/service/** 则对请求路径进行重写,去掉api  -->  http://localhost:7070/**#http://localhost:5050/api/service/oss/policy 去掉/api/service--> http://localhost:7070/oss/policy- id: llpliving-serviceutil_routeuri: lb://llpliving-serviceutilpredicates:- Path=/api/service/**filters:- RewritePath=/api/(?.*),/$\{segment}#比如请求地址为 http://localhost:5050/api/commodity/** 则对请求路径进行重写,去掉api  -->  http://localhost:5050/**#因为/api/commodity/**是一个更加精确的路径,必须将这组路由放到/api/**路由前面,否则会报错- id: llpliving-commodity_routeuri: lb://llpliving-commoditypredicates:- Path=/api/commodity/**filters:- RewritePath=/api/(?.*),/$\{segment}#配置人人fast路由, lb 是协议名如果renren-fast服务有多个支持负载均衡# 下面的配置表示前端请求gateway服务 localhost:5050/api开头则将请求转发到renren-fast服务对应的 /renren-fast/**- id: llpliving_renren-fast_routeuri: lb://renren-fastpredicates:- Path=/api/**# 路径重写, 将表示 api 拿到,才能找到真正的请求地址,segment表示路径后的参数名字可自定义,但需前后保持一致filters:- RewritePath=/api/(?.*),/renren-fast/$\{segment}# for nginx 增加一组路由- id: llpliving_host_routeuri: lb://llpliving-commoditypredicates:- Host=**.llpliving.com

5.重启网关, 再访问,会依然错误, 因为 nginx 在转发请求到网关会丢掉一些信息,比如host,因此需要重新配置

6.再次修改 vi /mydata/nginx/conf/conf.d/llpliving.conf

proxt_set_header Host $host让nginx进行请求转发时携带host信息

image-20230108135042653

7.重启nginx

sudo docker restart nginx

3.访问测试image-20230108135230130

4.注意事项和细节

1、!!网关配置不要把 Host 路由配置到前面, 否则按照域名+api 方式的路由就不会成功了, 因为会优
先匹配到 Host

2、将路由配置放在其它路由配置后面, 再测试就 OK 了

# for nginx 增加一组路由- id: llpliving_host_routeuri: lb://llpliving-commoditypredicates:- Host=**.llpliving.com

image-20230108135636951

相关内容

热门资讯

湖北潜江警方:一男子醉酒持玩具...   央视网消息:据潜江公安微信公众号消息,湖北潜江市公安局12月27日发布警情通报,12月26日21...
“涨到可怕了!”有人一觉醒来赚... 新闻荐读 白银暴涨10%,接近20元/克;现货黄金站上4549美元/盎司,刷新历史高位;铂金大涨,铂...
视频丨日本民众举行集会 反对重...   26日晚,部分日本民众在日本首相官邸前举行抗议集会。他们表示,在日本核设施老化、管理混乱、监管不...
加沙地带卫生部门:本轮停火期间...   △加沙地带(资料图)  当地时间12月27日,根据加沙地带卫生部门公布最新统计报告显示,在过去4...
时光相册|从信仰之路到幸福路的...   12月26日10时许  随着“复兴号”智能动车组列车  驶出延安站  西安至延安高铁开通运营  ...
全球洞察│马来西亚学者:日本政...   近期,日本首相高市早苗及其领导的政府在军事安全问题上恶劣言论不断。  11月,日本媒体披露,高市...
全国人民代表大会常务委员会批准... 全国人民代表大会常务委员会批准任命的名单(2025年12月27日第十四届全国人民代表大会常务委员会第...
2025“三农”成绩单|精耕良...   一年来,各地各部门辛勤耕耘、真抓实干,不断夯实“三农”发展基础。2025年,我国粮食实现高位增产...
绘说现代化丨冰雪龙江 热力全开   2024-2025冰雪季,黑龙江累计接待国内外游客1.35亿人次;黑龙江拥有超 4000 家冰雪...
体育课“搬进”滑雪场 新疆学生...   近日,记者跟随“新疆的冬天亚克西”主题采访团来到新疆昌吉回族自治州阜康市,聚焦冰雪经济高质量发展...