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

springcloud集成gateway

本篇文章只介绍gateway模块的搭建步骤,并无gateway详细介绍
gateway详解请查看:SpringCloudGateway官方文档详解

前置处理

父模块中已指定版本
在这里插入图片描述
不知道如何选择版本看这篇:
手把手教你梳理springcloud与springboot与springcloudalibaba的版本对应关系

一. Gateway模块引入依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency><!--客户端负载均衡loadbalancer-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

注意:gateway无需引入spring-boot-starter-web,因为gateway内部集成了Netty服务器,启动会报错

二. 配置 bootstrap.yml 文件(nacos作为注册中心)

这里是引入nacos,gateway具体配置可以放在nacos配置中心

spring:application:name: gatewayprofiles:active: devcloud:nacos:username: nacospassword: nacosdiscovery:# 命名空间namespace: 26dc328e-87e1-4ebb-9882-e46aa0cfbf0c# 同一个项目下的服务,要在同一个分组下,相互间才能通信group: dev# nacos服务端server-addr: 127.0.0.1:8848config:# nacos服务端server-addr: 127.0.0.1:8848# 分组group: dev# 命名空间namespace: 26dc328e-87e1-4ebb-9882-e46aa0cfbf0c# 配置文件类型file-extension: yaml# 读取公用配置shared-configs:- data-id: common-dev.yamlgroup: devrefresh: true

三. nacos配置中心中对应gateway配置文件

server:port: 7000spring:cloud:# 动态路由gateway:discovery:locator:# 开启从注册中心动态创建路由的功能,利用微服务名进行路由enabled: true# 表示将请求路径的服务名配置改成小写 ,因为服务注册的时候,向注册中心注册时将服务名转成大写的了lowerCaseServiceId: true# 若配置路由URI为lb,则注册中心服务名称不能和server.servlet.context-path名称一致,否则contextPath会被改写为空字符串;加上这一行配置可以解决问题filters:- StripPrefix=0# 路线routes:- id: admin # 路线ID,保持唯一# 表示使用负载均衡策略,admin是服务IDuri: lb://admin# uri: http://localhost:7001# predicates定义了路由的匹配条件,这里使用的是路径匹配,所有以/admin/开头的请求都会被路由到admin服务。predicates:- Path=/admin/**- id: memberuri: lb://memberpredicates:- Path=/member/**- id: netdiskuri: lb://netdiskpredicates:- Path=/netdisk/**- id: bloguri: lb://blogpredicates:- Path=/blog/**- id: thirdpartyuri: lb://thirdpartypredicates:- Path=/thirdparty/**# 处理跨域请求globalcors:corsConfigurations:'[/**]':allowedHeaders: "*" # 允许所有请求头allowedOriginPatterns: "*" # 允许所有请求源#- "http://www.baidu.com" # 允许特定请求源allowCredentials: true # 允许发送CookieallowedMethods: # 允许所有请求方法- GET- POST- DELETE- PUT- OPTION

在这里插入图片描述

四. 检查gateway是否配置成功

还用这篇文章的测试接口 springcloud项目引入naocs2.x
在这里插入图片描述
admin模块有一个测试接口,直接调用的连接为

http://localhost:7001/admin/nacos/getCommonNacosConfig

在这里插入图片描述
用gateway转发的连接为
http://localhost:7000/admin/nacos/getCommonNacosConfig
在这里插入图片描述

五. 问题汇总

1. context-path和application.name一致问题:

若配置路由URI为lb,则注册中心服务名称不能和server.servlet.context-path名称一致,否则contextPath会被改写为空字符串;

解决方案:

  1. context-path和application.name设置为不同
  2. filters:
    - StripPrefix=0
    在这里插入图片描述
  3. filters[0]:
    - StripPrefix=PreserveHostHeader
    在这里插入图片描述

参考文章:https://blog.csdn.net/weixin_43303455/article/details/122279447

2. Whitelabel Error Page This application has no configured error view, so you are seeing this as a fallback.

原因是缺少负载均衡依赖

解决方法:gateway模块引入spring-cloud-starter-loadbalancer依赖

<!--客户端负载均衡loadbalancer-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
http://www.lryc.cn/news/536253.html

相关文章:

  • 2025常用的SEO工具有哪些?
  • C++类和对象进阶:运算符重载深度详解
  • Mybatisplus——Mybatisplus3.5.2版本使用Page分页插件查询,records有数据但是total显示0
  • C#(Winform)通过添加AForge添加并使用系统摄像机
  • AI使用场景简单测试
  • Linux 配置 MySQL 定时自动备份到另一台服务器
  • PostgreSQL 备库的延迟问题
  • 力扣-二叉树-226 翻转二叉树
  • 基于SpringBoot的在线车辆租赁信息管理系统
  • 掌握 systemd:Linux 服务管理的核心工具
  • 【信息系统项目管理师-案例真题】2019下半年案例分析答案和详解
  • C/C++程序的内存是如何开辟的?
  • 日志结构化处理:PO对象toString日志转JSON工具
  • python学opencv|读取图像(六十五)使用cv2.boundingRect()函数实现图像轮廓矩形标注
  • 大疆无人机需要的kml文件如何制作kml导出(大疆KML文件)
  • ArrayList、LinkedList、HashMap、HashTable、HashSet、TreeSet
  • 手动配置IP
  • idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
  • 游戏引擎学习第101天
  • css块级元素和行内元素区别
  • JAVA安全—Shiro反序列化DNS利用链CC利用链AES动态调试
  • 什么是信息熵
  • 使用API有效率地管理Dynadot域名,清除某一文件夹中域名的默认DNS设置
  • 2.11 sqlite3数据库【数据库的相关操作指令、函数】
  • 当 LSTM 遇上 ARIMA!!
  • kali连接xshell
  • 图像曲率滤波
  • TCP 和 UDP 可以绑定相同的端口吗?
  • 【Python网络爬虫】爬取网站图片实战
  • 2024年博客之星年度评选—创作影响力评审+主题文章创作评审目前排名(2024博客之星陪跑小分队助力2024博客之星创作者成长)