Nginx配置负载均衡到网关

news/2024/11/23 10:15:17/

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>.*),/$\{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>.*),/$\{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/(?<segment>.*),/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


http://www.ppmy.cn/news/10467.html

相关文章

认真学习MySQL中的那些日志文件-二进制日志(binlog)

binlog即binary log&#xff0c;二进制日志文件&#xff0c;也叫作变更日志&#xff08;update log&#xff09;。它记录了数据库所有执行的DDL和DML等数据库更新事件的语句&#xff0c;但是不包含没有修改任何数据的语句&#xff08;如数据查询语句select、show等&#xff09;…

前端一面react面试题解析整理

目录 redux与mobx的区别&#xff1f; Redux 怎么实现属性传递&#xff0c;介绍下原理 React中发起网络请求应该在哪个生命周期中进行&#xff1f;为什么&#xff1f; 如何解决 props 层级过深的问题 React 事件机制 如何配置 React-Router 实现路由切换 React 高阶组件、…

readme

ESP32-VSCODE环境搭建 环境安装 在Windows中安装ESP-IDF在vscode中安装Espressif IDF插件开始配置Espressif IDF插件 在vscode最上方点击&#xff1a;查看->命令面板&#xff0c;输入esp-idf:config&#xff0c;选择ESP-IDF:Configure ESP-IDF extension 选择EXPRESS [外链…

【C初阶】C初阶考试题

选择加编程一、选择题&#xff08;一&#xff09;递归&#xff08;二&#xff09;后置发生死循环&#xff08;三&#xff09;后置运算&#xff08;四&#xff09;操作符运算&#xff08;五&#xff09;全局变量与生命周期&#xff08;六&#xff09;操作符知识&#xff08;七&a…

【Linux】进程信号

前言&#xff1a; 大家好呀&#xff0c;欢迎大家点进这篇Linux学习笔记。本篇将会着重介绍Linux中信号的相关操作&#xff0c;更加深刻的去理解进程和操作系统之间的关系。 我的上一篇Linux博客&#xff1a;【Linux】进程间通信-共享内存_柒海啦的博客-CSDN博客 让我们直接开始…

Qu artu s II 9.0 软件的使用

1&#xff0e;实验目的和要求本实验为验证性实验&#xff0c;其目的是熟悉Qu artu s II 9.0 软件的使用&#xff0c;学会利用Qu artu s II 9.0 软件来完成整个EDA 开发的流程。2&#xff0e;实验原理利用VHDL 完成电路设计后&#xff0c;必须借助EDA 工具中的综合器、适配器、时…

云服务器定时执行python脚本

文章目录前言crontab简介基本语法定时任务具体内容python 脚本定时任务前言 在服务器上定时执行任务有两种方式&#xff0c;一种是at定时任务&#xff0c;一种是crond任务调度&#xff0c;at命令是一次性定时计划任务&#xff0c;at的守护进程 atd会以后台模式运行&#xff0c…

学校里很少提及但很实用的C语言开发基础知识

目录0. 前言1. 开发环境1.1 IDE1.2 代码文本编辑器1.3 编译器1.3.1 GCC1.4 调试器2. C语言2.1 位域2.2 指示器2.2.1 数组指示器2.2.2 结构体指示器2.2.3 结构体 数组2.3 变长数组2.4 预处理指令2.4.1 #运算符2.4.2 ##运算符2.4.3 可变参数宏2.5 泛型选择2.6 内建函数2.7 其他特…