Spring Cloud Gateway 测试问题解决

栏目: Java · 发布时间: 5年前

内容简介:本文针对于测试环境SpringCloud Gateway问题解决。本文遇到的问题都是在测试环境真正遇到的问题,不一定试用于所有人,仅做一次记录,便于遇到同样问题的干掉这些问题。使用版本:SpringCloud 2.0.0.RELEASE

本文针对于测试环境SpringCloud Gateway问题解决。

1.背景介绍

本文遇到的问题都是在测试环境真正遇到的问题,不一定试用于所有人,仅做一次记录,便于遇到同样问题的干掉这些问题。

使用版本:SpringCloud 2.0.0.RELEASE

1.1 Gateway配置

之前系统是由阿里云SLB直接分发到几台生产服务器,但是经过研究,决定在中间加一层网关,也就是阿里云SLB分发流量到Gateway到下游服务。但是又由于种种原因,决定使用Host方式进行拦截处理,以下为部分配置代码:

注意,其中部分内容并非真实环境内容,但是场景绝对真实,如:

  • test_client:routes的ID。

  • uri:这里使用的Eureka内的application name

  • Host:需要拦截的域名

  • filters:域名前缀

1.2 Gateway过滤器

过滤器内容如下,稍后介绍:

1.3 下游服务拦截器

下游服务拦截器大致内容如下,这段代码是原有的代码,这个功能大概就是加载公共的属性basePath,用于加载静态资源,比如前端的jquery.js,根据域名判断,然后选择是加载为http://127.0.0.1:8080/jquery.js还是https://www.dalaoyang.cn/jquery.js这种:

1.4 下游服务用户过滤器

这段代码也是原有的代码,用户Session过滤器,这个完整内容很多,只截取遇到问题的片段,大致内容就是判断用户是否在其他地方登录,如果登录了就弹出的固定的提示页面,内容如下:

1.5 跳转流程

跳转如下:

1.域名指向了Gateway地址。

2.在浏览器使用域名访问Gateway,被Gateway转发到下游服务,返回对应响应。

2.问题一 下游服务无法获取域名

在使用上述配置后,使用request.getServerName()方法已经无法获取到域名了,经过测试,获取到的是服务器的ip地址,导致虽然页面可以正常跳转,但是无法获取到正确的域名,导致静态资源加载有问题。

在网上请教了很多人,本想看看是不是什么地方没有设置对,但是后台还是采取大多数人的建议,在header中加入一个域名信息,修改后Gateway过滤器如下:

很容易看到,就是如下这句话:

下游服务过滤修改为:

其实大致内容就是,使用如下方式获取域名:

到此,问题解决了,大部分内容跳转正常。

3.问题二 NPE异常

部分请求,经过路由访问报如下错误。

遇到问题后,没有很慌,打开了百度查了查(微笑)。百度没让我很失望,基本上没啥答复,然后谷歌了一下,看到了github上的一个issues,大致内容感觉是SpringCloud Gateway 2.0.0.RELEASE版本有些问题,升级一下版本就好了,如图。

Github issues地址:

https://github.com/spring-cloud/spring-cloud-gateway/issues/429 https://github.com/spring-cloud/spring-cloud-gateway/issues/374

Spring Cloud Gateway 测试问题解决

说实话,感觉是版本问题,但是又看到了一篇国人的文章,地址是:http://xiaoqiangge.com/aritcle/1545889008833.html,问题大致类似,加了一下博主的微信,请教了一下,大致了解到了,升级了一下版本,问题解决。

感谢小强哥!!!

4.问题三 下游用户过滤器跳转失效

问题是这样的,刚刚介绍了,用户在其他地方登录会自动跳转至一个界面提示给用户,发现问题是无法跳转。

查看gateway日志,大概提示了这样一句话,如下:

从内容大致可以看出,重定向有问题,想到了在用户过滤器中最后的重定向,决定在这里下手,修改后内容如下:

问题也解决了,目前还在踩坑测试中,如果大家有类似经验可以一起探讨。

加入星球特权

Spring Cloud Gateway 测试问题解决

1、从前端到后端玩转Spring Cloud

2 实战分库分表中间件Sharding-JDBC

3、实战分布式任务调度框架Elastic Job

4、配置中心Apollo实战

5、高并发解决方案之缓存

6、更多课程等你来解锁,20+课程

Spring Cloud Gateway 测试问题解决


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编程精粹

编程精粹

Steve Maguire / 人民邮电出版社 / 2009.2 / 45.00元

编写高质量的、没有bug的程序,是每位程序员所追求的目标。但随着软件规模越来越大,功能日趋复杂,这一目标变得越来越困难。 本书揭示了微软公司应对质量挑战、开发出世界级代码的技术内幕,作者在自己不断探索、实践和思考的基础上,系统总结了多年来指导微软各团队的经验,将其凝聚为许多切实可行的编程实践指导,可谓字字珠玑。正因如此,本书被公认为与《代码大全》齐名的编程技术名著,曾于1993年荣获有软件开......一起来看看 《编程精粹》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具