Zuul 实现网关转发的五种方式小结

 更新时间:2021年07月05日 11:43:49   作者:阿尔卑斯狼__  
这篇文章主要介绍了Zuul 实现网关转发的五种方式小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

上图为一个微服务框架的简单示例,当有一个HTTP请求发送到服务器的时候,其实是先经过了Nginx的,再经过了网关,这里的网关就担任了拦截过滤的作用,既然拦截和过滤了,肯定就涉及到了请求的转发

转发我大致例了以下五种转发方式:

方式一:path+serviceId 方式

在spring_cloud的配置文件application.yml 文件中加入以下配置:

server:
    port: 8888 #服务端口
spring:
    application:
        name: app-zuul-gateway #指定服务名
eureka:
  client:
    service-url:
           defaultZone: http://127.0.0.1:8100/eureka/  #注册到eureka中的地址
    register-with-eureka: true  
    fetch-registry: true

instance:
      prefer-ip-address: true #将自己的ip地址注册到Eureka服务中
      ip-address: 127.0.0.1   #ip地址
zuul:
#  方式一:path+serviceId
    routes: #定义服务转发规则
        abcs:   #abcs这个名字任意取的
	        path: /order/**   #配置请求URL的请求规则
	        serviceid: app-order  #eureka中服务的id

跳转示例 :

http://localhost:8888/order/order2/201810300001

http://localhost:8888/order就相当于指定了eureka中id为app-order的微服务,后面在接上他本身的参数,就可以正常使用了

方式二:指定服务id 方式

zuul:
 routes: #定义服务转发规则
         app-order: /order/**

跳转示例 :

http://localhost:8888/order/order2/201810300001

和方法一一样,http://localhost:8888/order就相当于指定了eureka中id为app-order的微服务,后面在接上他本身的参数,就可以正常使用了

方式三:同时配置path和url 方式

zuul:
 routes: #定义服务转发规则
  abcs:
     path: /order/**
     url: http://127.0.0.1:8091 #真正的微服务地址,path匹配的请求都转发到这里

跳转示例 :

http://localhost:8888/order/order2/201810300001

上面的和方法一样,http://localhost:8888/order就相当于指定了eureka中id为app-order的微服务,后面在接上他本身的参数,就可以正常使用了

方式四:路由前缀 方式

zuul:
 prefix: /order2
 strip-prefix: false
 routes:
      app-order: /order/**

跳转示例 :

http://localhost:8888/order2/app-order/201810300001

访问Zuul的/order2/app-order/201810300001路径,请求将会被转发到app-order 的order2/201810300001

方式五:路由前缀2 方式

zuul:
 routes:
     app-order:
        path: /order2/**
        strip-prefix: false

跳转示例 :

http://localhost:8888/order2/201810300001

访问Zuul的/order2/201810300001路径,请求将会被转发到app-order 的order2/201810300001

今天的分享就到此结束啦,以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring(AbstractRoutingDataSource)实现动态数据源切换示例

    Spring(AbstractRoutingDataSource)实现动态数据源切换示例

    本篇文章主要介绍了详解Spring(AbstractRoutingDataSource)实现动态数据源切换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • Java深入浅出数组的定义与使用上篇

    Java深入浅出数组的定义与使用上篇

    数组是有序的元素序列,若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式
    2022-03-03
  • java合并多个文件的实例代码

    java合并多个文件的实例代码

    在本篇文章里小编给大家整理的是关于java合并多个文件的实例代码,有需要的朋友们可以参考学习下。
    2020-02-02
  • springboot定时任务详解

    springboot定时任务详解

    这篇文章主要介绍了springboot定时任务的相关资料,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2021-01-01
  • java循环遍历无规则json的方式:gson、fastjson、orgjson

    java循环遍历无规则json的方式:gson、fastjson、orgjson

    这篇文章主要介绍了java循环遍历无规则json的方式:gson、fastjson、orgjson,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • SpringBoot整合Freemarker的基本步骤

    SpringBoot整合Freemarker的基本步骤

    这篇文章主要介绍了SpringBoot整合Freemarker的基本步骤,添加依赖及添加相关配置的实例代码详解,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Java中可变长度参数代码详解

    Java中可变长度参数代码详解

    这篇文章主要介绍了Java中可变长度参数代码详解,涉及了实参个数可变的定义方法,数组包裹实参等几个问题,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • scala 匿名函数案例详解

    scala 匿名函数案例详解

    Scala支持一级函数,函数可以用函数文字语法表达,即(x:Int)=> x + 1,该函数可以由一个叫作函数值的对象来表示,这篇文章主要介绍了scala 匿名函数详解,需要的朋友可以参考下
    2023-03-03
  • 利用Java获取文件名、类名、方法名和行号的方法小结

    利用Java获取文件名、类名、方法名和行号的方法小结

    这篇文章运用实例代码给大家介绍了利用Java怎样获取文件名、类名、方法名和行号,有需要的可以参考借鉴,下面一起来看看吧。
    2016-08-08
  • 浅谈JDK8中的Duration Period和ChronoUnit

    浅谈JDK8中的Duration Period和ChronoUnit

    在JDK8中,引入了三个非常有用的时间相关的API:Duration,Period和ChronoUnit。他们都是用来对时间进行统计的,本文将会详细讲解一下这三个API的使用
    2021-06-06

最新评论