当前位置: 首页 > news >正文

nginx反向代理----->微服务网关----->具体微服务

今天,做项目的时候做项目的时候配路由出现bug,特此理顺一下从nginx到微服务网关再到微服务这一过程。
在这里插入图片描述

nginx配置

upstream  admin-gateway{server localhost:21217;
}server {listen 8803;location / {root F:/develop/admin-web/;index index.html;}location ~/service_6001/(.*) {proxy_pass http://admin-gateway/$1;proxy_set_header HOST $host;  # 不改变源请求头的值proxy_pass_request_body on;  #开启获取请求体proxy_pass_request_headers on;  #开启获取请求头proxy_set_header X-Real-IP $remote_addr;   # 记录真实发出请求的客户端IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  #记录代理信息}
}

admin-gateway网关配置

server:port: 21217
spring:application:name: admin-gatewaycloud:nacos:discovery:server-addr: x.xx.xx.xx:8848config:server-addr: x.xx.xx.xx:8848file-extension: ymlcloud:gateway:globalcors:cors-configurations:'[/**]': # 匹配所有请求allowedOrigins: "*" #跨域处理 允许所有的域allowedMethods: # 支持的方法- GET- POST- PUT- DELETEroutes:# 管理微服务- id: adminuri: lb://admin-serverpredicates:- Path=/admin/**filters:- StripPrefix= 1

admin-server微服务配置

server:port: 51806
spring:application:name: admin-servercloud:nacos:discovery:server-addr: x.xx.xx.xx:8848config:server-addr: x.xx.xx.xx:8848file-extension: yml

以上就是三者配置,并且网关和微服务已经注册到nacos注册中心。接下来我们理一下,从前端nginx是如何到后端微服务的。

前端 Nginx

  1. Nginx 通过配置文件指定了监听的端口号为 8803。
  2. 当收到请求时,如果 URL 匹配了**~/service_6001/(.*)** 的正则表达式,则会转发到 http://admin-gateway/$1$1表示去掉一个请求路径
  3. 请求转发时,Nginx 会保留原始请求头,并添加额外的代理头信息。admin-gateway

微服务网关

  1. 该微服务网关监听在端口 21217。 使用 Spring Cloud Gateway 实现,在配置中指定了 Nacos 注册中心的地址。
  2. 配置了一个路由 admin,匹配路径为 /admin/**,转发到 lb://admin-server,这里的 lb://意味着使用负载均衡。
  3. 这里的路由也包含了一个过滤器 StripPrefix=1,用于去掉路径中的前缀,保证请求能够正确到达微服务。

admin-server 微服务

  1. 该微服务监听在端口 51806。 也使用了 Nacos 作为注册中心,并指定了配置中心的地址。

综合起来,前端的请求首先到达Nginx,根据配置的规则,如果 URL 符合 /service_6001/(.*),则会被转发到 admin-gateway微服务网关。网关根据配置的路由将请求转发到对应的 admin-server 微服务上,进行处理。整个过程中,Spring Cloud Gateway 作为微服务网关起到了路由转发和过滤器的作用,Nacos则作为服务注册中心和配置中心,管理着服务的注册与发现以及配置的管理。

举例

如果一个请求是http://localhost:8803/service_6001/admin/login/in,这个请求如何变化

  1. 当收到这个请求时,根据前面提到的 Nginx 配置,它会匹配到 **~/service_6001/admin(.*)**的正则表达式规则。因此,这个请求将被转发到
    http://admin-gateway/admin/login/in

  2. 根据 admin-gateway 微服务网关的配置,这个请求会进一步被路由到 admin-server微服务上,但在路由过程中,网关会将路径中的前缀 /admin 去掉,因为配置中包含了过滤器
    StripPrefix=1。所以最终请求到达 admin-server 微服务的路径是 /login/in,完整的目标路径是http://admin-server:51806/login/in。

http://www.lryc.cn/news/294612.html

相关文章:

  • 怎么清理电脑内存?详细图文教程分享!
  • CKS1.28【1】kube-bench 修复不安全项
  • 6.s081 学习实验记录(五)traps
  • 探索设计模式的魅力:从单一继承到组合模式-软件设计的演变与未来
  • 文心一言4.0API接入指南
  • Python循环语句——while循环的嵌套应用
  • 数据库管理-第145期 最强Oracle监控EMCC深入使用-02(20240205)
  • Centos 7系统安装proftpd-1.3.8过程
  • DevExpress ASP.NET Web Forms v23.2最新版本系统环境配置要求
  • 5分钟快速掌握 XML (Extensible Markup Language)
  • Python中的HTTP代理服务器和客户端的区别与联系
  • 升级Oracle 单实例数据库19.3到19.22
  • 在Vue中如何动态绑定class和style属性
  • 使用Docker部署DashDot服务器仪表盘并结合cpolar实现公网监测服务器
  • Android kernel logcat时间戳显示错乱修改
  • 2024年考PMP还有什么用?
  • 解决zabbix图像中文乱码
  • centos间文件传输
  • 2.0 Zookeeper 安装配置
  • Matomo 访问图形显示异常
  • MySQL学习记录——사 表结构的操作
  • 【华为 ICT HCIA eNSP 习题汇总】——题目集12
  • Redis发布订阅及事务管理
  • 设计模式第五天|代理模式 7-小明买房子 装饰模式 8-咖啡加糖
  • mongodb数据库集合(表)的创建和数据修改
  • MySQL 的UI
  • Leetcode 3026. Maximum Good Subarray Sum
  • elementUI之el-form-item的嵌套的场景
  • Linux项目自动化构建工具之make/Makefile演示gcc编译
  • ChatGPT 官方中文页面上线