spring cloud中代理服务器zuul的使用

主流网关:

    zuul

    kong 基于nginx的API Gateway

    nginx+lua

1、新建项目,选择eureka discovery 和zuul

 

2、启动类中增加 @EnableZuulProxy

 

3、修改配置文件后缀名为yml,并在配置中增加端口号、应用名称和注册中心地址,如下:

    server:

     port: 9000

    spring:

     application:

        name: api-gateway

 

    eureka:

     client:

        service-url:

         defaultZone: http://localhost:7880/eureka #注册中心地址

        

4、访问

http://192.168.136.128:8651/api/v1/orderfeignhystrix/save?userId=2&productId=2

修改为

http://192.168.136.128:9000/orderfeignhystrix-service/api/v1/orderfeignhystrix/save?userId=2&productId=2

 

 

http://192.168.136.128:8765/api/v1/product/list

修改为

http://192.168.136.128:9000/product-service/api/v1/product/list

 

5、自定义路由转发

zuul:

routes:

product-service: /apigateway/**

    

访问    

http://192.168.136.128:9000/apigateway/api/v1/product/list

 

6、环境隔离:

            需求 :不想让默认的服务对外暴露接口

                product-service/api/v1/product/list

 

            配置:

            zuul:

                ignored-patterns:

                    - /*-service/api/v1/product/list

可以访问

http://192.168.136.128:9000/apigateway/api/v1/product/list

不可以访问

http://192.168.136.128:9000/product-service/api/v1/product/list        

原生地址仍旧可以访问

http://192.168.136.128:8765/api/v1/product/list

 

7、三个注意事项:

    1)、路由名称定义问题

        路由映射重复覆盖问题

        zuul:

         routes:

            product-service: /apigateway/**

            orderfeignhystrix-service-service: /apigateway/**

        这样会覆盖,product-service会无法访问

        可以增加子目录来区分

        zuul:

         routes:

            product-service: /apigateway/product/**

            orderfeignhystrix-service-service: /apigateway/order/**

    2)、Http请求头过滤问题(在 routers类中可以看到这个定义sensitiveHeaders)

        默认session等请求是关闭的

        "Cookie", "Set-Cookie", "Authorization"

        在yml文件中增加zuul的routes属性sensitiveHeaders:

        修改后为

        zuul:

         routes:

            product-service: /apigateway/product/**

            orderfeignhystrix-service: /apigateway/order/**

         ignored-patterns:

            - /*-service/api/v1/product/list

         sensitiveHeaders:

        测试方法:在order服务的controller的save中增加代码,并使用postman测试,增加如下代码

         String token = httpServletRequest.getHeader("token");

String session=httpServletRequest.getHeader("session");

System.out.println("token is:"+token);

System.out.println("session is:"+session);

        使用postman进行测试

            http://192.168.136.128:9000/orderfeignhystrix-service/api/v1/orderfeignhystrix/save?userId=2&productId=2

            增加header中的session和token属性

            

    3)、过滤器执行顺序问题 ,过滤器的order值越小,越先执行

        

spring cloud中代理服务器zuul的使用的更多相关文章

  1. spring cloud 学习(6) - zuul 微服务网关

    微服务架构体系中,通常一个业务系统会有很多的微服务,比如:OrderService.ProductService.UserService...,为了让调用更简单,一般会在这些服务前端再封装一层,类似下 ...

  2. Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul)

    Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul) 1.Eureka Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是 ...

  3. Spring Cloud中Feign如何统一设置验证token

    代码地址:https://github.com/hbbliyong/springcloud.git 原理是通过每个微服务请求之前都从认证服务获取认证之后的token,然后将token放入到请求头中带过 ...

  4. Spring Cloud 入门 之 Zuul 篇(五)

    原文地址:Spring Cloud 入门 之 Zuul 篇(五) 博客地址:http://www.extlight.com 一.前言 随着业务的扩展,微服务会不对增加,相应的其对外开放的 API 接口 ...

  5. Spring Cloud 服务网关Zuul

    Spring Cloud 服务网关Zuul 服务网关是分布式架构中不可缺少的组成部分,是外部网络和内部服务之间的屏障,例如权限控制之类的逻辑应该在这里实现,而不是放在每个服务单元. Spring Cl ...

  6. Spring Cloud Gateway VS Zuul 比较,怎么选择?

    Spring Cloud Gateway 是 Spring Cloud Finchley 版推出来的新组件,用来代替服务网关:Zuul. 那 Spring Cloud Gateway 和 Zuul 都 ...

  7. Spring Cloud 网关服务 zuul 三 动态路由

    zuul动态路由 网关服务是流量的唯一入口.不能随便停服务.所以动态路由就显得尤为必要. 数据库动态路由基于事件刷新机制热修改zuul的路由属性. DiscoveryClientRouteLocato ...

  8. 详解Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

    在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离. 在使用线程隔离的时候,有个问题是必须 ...

  9. Spring Cloud中负载均衡器概览

    在上篇文章中(RestTemplate的逆袭之路,从发送请求到负载均衡)我们完整的分析了RestTemplate的工作过程,在分析的过程中,我们遇到过一个ILoadBalancer接口,这个接口中有一 ...

随机推荐

  1. Linux 如何通过某一台服务器调用执行多台远程服务器上的脚本,结果显示在本地?

    现在都流行自动化运维了,可能目前技术不够,很多自动化工具还不怎么会用,所以本次只是通过ssh来实现功能. 说明:自己写的一个简单脚本,只是实现了基础功能,还有待优化. 一共三台机器: master:1 ...

  2. OpenFOAM动网格技术介绍【转载】

    转载自:http://blog.sina.com.cn/s/blog_e256415d0101nfhp.html Chalmers大学的Andreu Oliver González对OpenFOAM中 ...

  3. 如何从DOS命令窗口进行复制粘贴

    在DOS窗口没有右键复制按钮,那我们如果想要进行复制粘贴该如何操作呢?本篇就来说明一下这个操作流程. 工具/原料   WIN7系统 方法/步骤     按“WIN+R”调出运行页面,在其中输入CMD然 ...

  4. yarn集群8088端口被攻击挖矿

    yarn集群8088端口被攻击挖矿 https://www.jianshu.com/p/a2d6b0d827ab https://blog.csdn.net/lm709409753/article/d ...

  5. PM2用法简介【命令行启动 --env 参数设置使用问题】

    环境切换 正式开发中分为不同的环境(开发环境.测试环境.生产环境),我们需要根据不同的情景来切换各种环境 pm2通过在配置文件中通过env_xx来声明不同环境的配置,然后在启动应用时,通过--env参 ...

  6. ASP生成JSON数据

    原文地址为:ASP生成JSON数据 < %@LANGUAGE = " VBSCRIPT "  CODEPAGE = " 65001 " % >    ...

  7. osg Shader 着色器

    #ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include <osg/Group> #include <os ...

  8. python数据可视化:pyecharts

    发现了一个做数据可视化非常好的库:pyecharts.非常便捷好用,大力推荐!! 官方介绍:pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 ...

  9. EXCEL中,在其中列 前面or后面加一个“元”字的技巧

    EXCEL小技巧,我们平常需要用到一些,记录下,供有需要的人参考! 案例: EXCEL其中的一列,每个后面加一个“元”字,如果要1个1个去加,相当麻烦,其实很简单,只需要一个公式即可! 解决方法: ( ...

  10. PHP爬虫最全总结2-phpQuery,PHPcrawer,snoopy框架中文介绍

    第一篇文章介绍了使用原生的PHP和PHP的扩展库实现了爬虫技术.本文尝试使用PHP爬虫框架来写,首先对三种爬虫技术phpQuery,PHPcrawer, snoopy进行对比,然后分析模拟浏览器行为的 ...