SpringCloud 服务网关路由规则的坑及解决

 更新时间:2021年07月15日 15:10:31   作者:浅然言而信  
这篇文章主要介绍了SpringCloud 服务网关路由规则的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

一、场景简述

笔者最近用到SpringCloud 服务网关的时候,进行服务网关的路由测试,发现无法路由自己设置的规则,测试的时候如下

通过错误排查发现,原来是路由规则写错了!

路由规则如下(错误)

#端口
server:
  port: 8080
spring:
  #该配置文件中的配置,对应的服务名称是wc-gateway
  application:
    name: wc-gateway
  profiles:
    active: dev
#服务网关配置
zuul:
  host:
    connect-timeout-millis: 60000
    socket-timeout-millis: 60000
    #路由规则
    routes:
      api:
        path: /api/user/**
        serviceId: wc-client-user

二、解决方案

只需要将routes及以下的属性左移,与host相等级别即可

修改后的路由规则

#端口
server:
  port: 8080
spring:
  #该配置文件中的配置,对应的服务名称是wc-gateway
  application:
    name: wc-gateway
  profiles:
    active: dev
#服务网关配置
zuul:
  host:
    connect-timeout-millis: 60000
    socket-timeout-millis: 60000
  #路由规则
  routes:
    api:
      path: /api/user/**
      serviceId: wc-client-user

好了,问题解决,我们重启应用测试,测试结果和预期一样。

SpringCloud 进阶之Zuul(路由网关)

1. Zuul(路由网关)

Zuul 包含了对请求的路由和过滤两个最主要的功能;

路由功能:负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础;

过滤功能:负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础;

Zuul 服务最终还是会注册进Eureka;

1.1 路由基本配置

新建 microservicecloud-zuul-gateway-9527

// pom.xml
<!-- zuul 路由网关 -->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
// application.yml
server:
  port: 9527
spring:
  application:
    name: microservicecloud-zuul-gateway
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
  instance-id: gateway-9527.com
  prefer-ip-address: true
  info:
    app.name: noodles-microcloud
    company.name: www.google.com
    build.artifactId: $project.artifactId$
    build.version: $project.version$
// hosts 修改: 127.0.0.1   myzuul.com
// 主启动类
@SpringBootApplication
@EnableZuulProxy
public class Zuul_9527_StartSpringCloudApp {
	public static void main(String[] args) {
		SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);
	}
}
// 启动
// 三个Eureka集群
// microservicecloud-provider-dept-8001
// 路由
// 测试访问:
// 不用路由: http://localhost:8001/dept/get/1
// 使用路由: http://myzuul.com:9527/microservicecloud-dept/dept/get/1

1.2 Zuul 路由访问映射规则

// microservicecloud-zuul-gateway-9527
// 修改 application.yml
zuul:
  ignored-services: microservicecloud-dept      # 将原有路由关闭
  routes:
    prefix: /test       # 设置统一公共前缀, 访问地址:http://myzuul.com:9527/test/mydept/dept/get/1
    mydept.serviceId: microservicecloud-dept
    mydept.path: /mydept/**
// 修改之前,访问地址: http://myzuul.com:9527/microservicecloud-dept/dept/get/1
// 修改之后,访问地址: http://myzuul.com:9527/mydept/dept/get/1

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决Java包装类比较时遇到的问题

    解决Java包装类比较时遇到的问题

    所谓包装类的作用就是将原始数据类型转换成引用数据类型,下面这篇文章主要给大家介绍了关于在Java包装类比较时遇到的问题的解决方法,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • SpringBoot项目启动报错踩坑实战记录

    SpringBoot项目启动报错踩坑实战记录

    这篇文章主要给大家介绍了关于SpringBoot项目启动报错踩坑的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • IDEA2020.3.2版本自动注释类和方法注释模板配置步骤详解

    IDEA2020.3.2版本自动注释类和方法注释模板配置步骤详解

    这篇文章主要介绍了IDEA2020.3.2版本自动注释类和方法注释模板配置步骤,本文给大家分享了我自己创建过程通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 两个小例子轻松搞懂 java 中递归与尾递归的优化操作

    两个小例子轻松搞懂 java 中递归与尾递归的优化操作

    这篇文章主要介绍了两个小例子轻松搞懂 java 中递归与尾递归的优化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringBoot整合WebSocket实现后端向前端主动推送消息方式

    SpringBoot整合WebSocket实现后端向前端主动推送消息方式

    这篇文章主要介绍了SpringBoot整合WebSocket实现后端向前端主动推送消息方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 在SpringBoot中使用YourKit进行性能调优的教程详解

    在SpringBoot中使用YourKit进行性能调优的教程详解

    在应用程序的开发过程中,性能调优是一个重要的环节,在SpringBoot应用程序中,我们可以使用YourKit来进行性能调优,YourKit是一款非常强大的Java性能调优工具,在本文中,我们将介绍如何在 SpringBoot应用程序中使用YourKit进行性能调优
    2023-06-06
  • JAVA8发送带有Body的HTTP GET请求

    JAVA8发送带有Body的HTTP GET请求

    本文主要介绍了JAVA8发送带有Body的HTTP GET请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • springboot log4j2.xml如何读取application.yml中属性值

    springboot log4j2.xml如何读取application.yml中属性值

    这篇文章主要介绍了springboot log4j2.xml如何读取application.yml中属性值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Mybatis Generator最完美配置文件详解(完整版)

    Mybatis Generator最完美配置文件详解(完整版)

    今天小编给大家整理了一篇关于Mybatis Generator最完美配置文件详解教程,非常不错具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-11-11
  • 详解SpringBoot Starter作用及原理

    详解SpringBoot Starter作用及原理

    大家都知道基于 SpringBoot 开发项目可以简化 Spring 应用的搭建以及开发过程,提高程序员开发效率,这是由于其“约定大约配置”的策略及其自动装配的特点,Starter 就是自动装配的具体实现,本文详细介绍了SpringBoot Starter作用及原理,欢迎大家来阅读学习
    2023-04-04

最新评论