解析HTTP请求从NG到网关再到具体服务的流程
off999 2025-03-30 19:49 29 浏览 0 评论
数据模拟:
1.前端请求url:
http://www.mum-baby.com/api/order/buy
2.网关3台机器,网关实例IP为10.0.1.101~103
整体请求如下
用户 → DNS域名解析→ 云负载均衡器(SLB/ALB) → Nginx集群(多台ECS) → Spring Cloud Gateway → 订单服务(Order Service)1. 云负载均衡器配置(以阿里云SLB为例)
核心配置步骤
1.1 创建负载均衡实例
(1)类型:选择「应用型负载均衡(ALB)」或「四层负载均衡(SLB)」。
(2)网络类型:公网或私网(根据业务需求)。
1.2 配置监听器
(1)前端协议:HTTP/HTTPS(如启用HTTPS需上传证书)。
(2)端口:80(HTTP)或 443(HTTPS)。
(3)后端协议:HTTP,端口80(指向Nginx集群)。
1.3 添加后端服务器组
将多台Nginx服务器(ECS实例)添加到服务器组。
健康检查:
(1)检查路径:/health(需在Nginx配置健康检查端点)。
(2)检查间隔:5秒。
(3)超时时间:2秒。
(4)健康阈值:2次成功标记节点健康。
(5)不健康阈值:3次失败标记节点不健康。
2.Nginx配置(每台ECS实例)
# 定义Spring Cloud Gateway集群(假设网关实例IP为10.0.1.101~103)
upstream spring_cloud_gateway {
server 10.0.1.101:8080 weight=5; # 权重配置
server 10.0.1.102:8080 weight=3;
server 10.0.1.103:8080 weight=2;
keepalive 32; # 连接池复用,减少TCP握手开销
}
server {
listen 80;
server_name www.mum-baby.com;
# 健康检查端点(供云负载均衡器调用)
location = /health {
access_log off;
return 200 "OK";
}
# 静态资源缓存(图片、CSS/JS)
location ~* \.(jpg|png|css|js)$ {
root /data/static;
expires 30d;
access_log off;
}
# 动态请求转发至Spring Cloud Gateway
location / {
proxy_pass http://spring_cloud_gateway;
proxy_set_header Host $host; # 透传域名
proxy_set_header X-Real-IP $remote_addr; # 透传用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 代理链IP记录
# 性能优化
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_connect_timeout 3s; # 连接网关超时时间
proxy_read_timeout 10s; # 读取网关响应超时时间
# 容错机制
proxy_next_upstream error timeout http_500 http_502 http_503;
}
}配置解析
- 健康检查:云负载均衡器通过/health端点定期检查Nginx存活状态。
- 静态资源缓存:直接由Nginx处理,减少网关压力。
- 动态请求转发:所有非静态请求均转发至Spring Cloud Gateway集群,通过upstream实现负载均衡。
3. Spring Cloud Gateway配置
核心配置:路由规则与鉴权
spring:
cloud:
gateway:
routes:
- id: order-service
uri: lb://order-service # 通过服务名负载均衡(需集成注册中心如Nacos)
predicates:
- Path=/api/order/** # 匹配路径规则
- Host=www.mum-baby.com # 仅处理指定域名的请求
filters:
- StripPrefix=1 # 去掉前缀/api/order
- AddRequestHeader=X-User-Id, ${header.Authorization} # 透传用户身份
# 集成Sentinel限流
sentinel:
enabled: true
eager: true
transport:
dashboard: localhost:8080
# 注册中心配置(以Nacos为例)
application:
name: api-gateway
cloud:
nacos:
discovery:
server-addr: 10.0.2.100:8848配置解析
- 路由规则:
- 将/api/order/**的请求路由至order-service服务。
- 使用lb://order-service表示通过注册中心(如Nacos)动态发现服务实例。
- 过滤器:
- StripPrefix=1:移除路径前缀/api/order,实际转发路径为/buy。
- AddRequestHeader:透传用户身份信息(如JWT Token)。
- 限流集成:结合Sentinel实现熔断与限流,保护订单服务。
4.完整请求流程示例
用户请求:
http://www.mum-baby.com/api/order/buy
4.1DNS解析
域名www.mum-baby.com解析到云负载均衡器的公网IP(如120.76.25.100)。
4.2云负载均衡器处理
根据配置的负载均衡算法(如加权轮询),将请求分发到某一台Nginx服务器(如ECS实例10.0.1.1:80)。
4.3 Nginx转发至网关
- Nginx根据location /规则,将请求转发至spring_cloud_gateway集群中的某个网关实例(如10.0.1.101:8080)。
- 请求头透传:
Host: www.mum-baby.com
X-Real-IP: 123.60.25.17(用户真实IP)
X-Forwarded-For: 123.60.25.17, 10.0.1.1(Nginx IP)4.4 Spring Cloud Gateway路由
(1)网关根据Path=/api/order/**和Host=www.mum-baby.com匹配路由规则。
(2)移除路径前缀/api/order,转发请求至order-service服务的/buy端点。
(3)通过注册中心(Nacos)获取order-service的实例列表(如10.0.3.101:8080)。
4.5 订单服务处理
(1)订单服务接收请求,执行库存扣减、生成订单等逻辑。
(2)返回响应(如{"orderId": "20231001123456"}),沿原路返回至用户。
相关推荐
- 宏基acer官网商城(宏基官方商城)
-
宏碁本本底部有个序列号标签,不是粉色的那个,粉色的是系统的序列号,白色的是本本的出厂序列号,上宏碁官网查查你的序列号就知道真假了。在盖子的后面就可以查询到序列号,或者是去网上查询宏碁笔记本在官网下...
- 网盘在哪里打开(华为网盘在哪里打开)
-
给你的是一个网盘地址吧,直接把这个地址放到浏览器地址栏就好了,如果有提取码,他会提示你输入提取码的。一般都是在网上找到百度云链接,然后把文件保存在自己的百度网盘文件夹里面的。打开百度网盘app,...
- win7sp1专业版(win7专业版vl)
-
Win7系统SP1是系统发布后第一个SP包x64是64位操作系统。Windows7指的是微软公司的Windows7操作系统ultimate指的是旗舰版(with表示伴随,说明这是提供商所提供...
- 手写输入法手写板怎么设置(手写输入法手写板怎么设置 iphone)
-
手写输入法设置方法:1、打开手机至桌面主页,保持手机处于工作状态; 2、在手机桌面主页列表找到设置,点击打开并进入设置主界面; 3、在设置主界面找到系统设置选项,点击打开并进入系统设置主界面; ...
-
- 推荐杀毒软件(下载杀毒软件最新版)
-
好的杀毒软件有360杀毒,金山毒霸,AVG杀毒等等。1,360杀毒,品牌介绍:360安全卫士品牌是一款由奇虎360公司推出的功能强、效果好、受用户欢迎的安全杀毒软件。360安全卫士拥有查杀木马、清理插件、修复漏洞、电脑体检、电脑救援、保护隐...
-
2025-11-12 08:51 off999
- 百度云盘官网(百度云盘官网下载)
-
网盘在手机上面仅仅是一个图标,他是不占用手机硬盘的,当然,如果你从网盘上下载了文件到本地,下载的文件就会占用手机的硬盘空间。要找到这个文件,可以通过文件管理器来进行查找,也可以通过路径的方式来查找,但...
-
- 路由器设置管理系统(路由器设置管理员密码怎么设置)
-
电脑端:把华为路由器接通电源,并开启WIFI,如果你使用电脑PC端,请使用网线连接路由器;成功连接到路由器之后,打开电脑浏览器,在浏览器中输入IP地址:192.168.3.1即可进入华为路由器管理界面;进入我要上网页面。在上网方式下拉框中,...
-
2025-11-12 07:51 off999
- win10家庭版密钥在哪里看(windows10家庭版密钥在哪里)
-
要查看Windows10系统的激活密钥,请按照以下步骤操作: 1.点击“开始”菜单,然后选择“设置”(齿轮图标)。 2.在“设置”窗口中,选择“更新和安全”。 ...
- 两个wifi路由器怎么连接(两个wifi路由器设置方法)
-
无线路由器再连接一个无线路由器的设置方法如下:一、主路由器设置方法:先将网线(总线)插在无线路由器的WAN口,用一条网线一头插入无线路由器的任意LAN口一头连接电脑网卡,开启路由器的电源。电脑打开浏览...
- windows7的安装过程(windows7安装步骤有哪些)
-
安装教程注意事项:1、本系统可以直接安装,不需要制作U盘启动盘,适合能正常开机的电脑。2、安装系统后C盘(包括桌面)数据会丢失,重要的东西请自行备份。3、此安装方法只适用于当前系统为XP、Win7、W...
- 惠普打印机插件手机版(惠普打印插件app)
-
您好,感谢您选择惠普产品。不是所有的打印机都可以实现手机打印功能的。一般来说支持ariprint的打印机,并且手机也有该功能,才能实现打印功能。如果您不需要实现打印功能,那么这个插件对您来说可能用处不...
- 电脑热点怎么禁止别人连接(怎么让电脑的热点不被关闭)
-
方法/步骤1/7首先,在我们的屏幕上找到“设置”。2/7点击进入设置之后,正数第三位就是个人热点。3/7在个人热点中,我们可以设置热点密码,开启关闭热点。4/7排名第三的是连接管理,可以设置允许一个至...
- 常用浏览器有哪些
-
电脑常用浏览器好用的方法步骤1从用户体验和功能扩展性来看,Chrome是最好用的浏览器。2Chrome拥有快速的页面加载速度、优秀的标签页管理和内置的开发者工具等功能,还有不断更新的扩展程序,能够...
- u盘怎么取消读写保护(优盘怎么去掉读写保护)
-
如果您的U盘启动了读写保护,那么就无法进行数据的读取和写入操作。以下是一些可能的解决方法:1.检查开关或按钮:一些U盘有物理开关或按钮,用于启用或禁用读写保护。您可以检查一下U盘上是否有这样的开关或...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
