springcloud集成gateway

news/2025/2/20 13:57:38/

本篇文章只介绍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

gateway_59">三. 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_126">四. 检查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.ppmy.cn/news/1573348.html

相关文章

AI角色扮演聊天前端SillyTavern

本文软件由网友 P家单推人 推荐 简介 什么是 SillyTavern &#xff1f; SillyTavern 是一个可以安装在电脑&#xff08;和安卓手机&#xff09;上的用户界面&#xff0c;让您可以与文本生成的人工智能互动&#xff0c;并与您或社区创建的角色聊天/玩角色扮演游戏。 主要特点 …

React实现自定义图表(线状+柱状)

要使用 React 绘制一个结合线状图和柱状图的图表&#xff0c;你可以使用 react-chartjs-2 库&#xff0c;它是基于 Chart.js 的 React 封装。以下是一个示例代码&#xff0c;展示如何实现这个需求&#xff1a; 1. 安装依赖 首先&#xff0c;你需要安装 react-chartjs-2 和 ch…

Python HTTP 请求工具类 HttpUtils:简化 HTTP 请求的高效工具

在现代的 Web 开发和 API 集成中,HTTP 请求是最常见的操作之一。无论是获取数据、提交表单,还是与 RESTful API 交互,我们都需要频繁地发送 HTTP 请求。为了简化这些操作,提升代码的可读性和可维护性,我们可以使用一个高效的工具类——HttpUtils。本文将详细介绍 HttpUtil…

游戏引擎学习第112天

黑板&#xff1a;优化 今天的内容是关于优化的&#xff0c;主要讨论了如何在开发中提高代码的效率&#xff0c;尤其是当游戏的帧率出现问题时。优化并不总是要将代码做到最快&#xff0c;而是要确保代码足够高效&#xff0c;以避免性能问题。优化的过程是一个反复迭代的过程&a…

three.js+WebGL踩坑经验合集(8.2):z-fighting叠面问题和camera.near的坑爹关系

本篇延续上篇内容&#xff1a; three.jsWebGL踩坑经验合集(8.1):用于解决z-fighting叠面问题的polygonOffset远没我们想象中那么简单-CSDN博客 笔者在上篇提到&#xff0c;叠面的效果除了受polygonOffset影响以外&#xff0c;还跟相机的近裁剪面camera.near密切相关&#xff…

OlympicArena 论文简介

近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;和大型多模态模型&#xff08;LMMs&#xff09;的飞速发展&#xff0c;让AI逐渐展现出接近人类水平的认知推理能力。然而&#xff0c;如何科学评估AI在复杂问题解决中的真实水平&#xff0c;一直是学术界和产业界的…

基于SSM+uniapp的鲜花销售小程序+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、商户功能模块&#xff1a;用户管理、商户管理、鲜花分类管理、鲜花管理、订单管理、收藏管理、购物车、充值、下单等技术选型&#xff1a;SSM&#xff0c;Vue&#xff08;后端管理web&#xff09;&#xff0c;uniapp等测试环境&#x…

【深度学习】计算机视觉(CV)-目标检测-DETR(DEtection TRansformer)—— 基于 Transformer 的端到端目标检测

1.什么是 DETR&#xff1f; DETR&#xff08;DEtection TRansformer&#xff09; 是 Facebook AI&#xff08;FAIR&#xff09;于 2020 年提出的 端到端目标检测算法&#xff0c;它基于 Transformer 架构&#xff0c;消除了 Faster R-CNN、YOLO 等方法中的 候选框&#xff08;…