Zuul网关无法路由请求

最近在做的一个需求,需要对外部访问微服务的接口进行token鉴权,想来想去还是用网关合适。因为公司原来有用的zuul网关但是没有上线,所以这次我就想把原来的网关服务整合进去。以前只看过zuul的一些资料并没有动手实战过,所以实战中还是踩了些坑,浪费了很多时间和精力,这就是只看不动手的坏处啊!
以下是入门遇到的小问题

网关已启动,状态也正常/info端点也可被访问,但是无法路由请求的话,多半是路由规则和访问路径对应不上的原因!

1. 路由规则

例:某公司的订单模块
原访问微服务时的路径/jd/order/12345
zuul网关地址10.1.1.9:9090
zuul网关配置路由

zuul:
  routes:
    order: /jd/order/**

如果我们要通过网关路由,则需要直接访问zuul网关服务的端口,然后加上路由,再加上接口路径。
实际访问路径:
http://10.1.1.9:9090/jd/order/jd/order/12345
zuul会帮你截掉路由匹配的前缀,然后转发到对应的order服务接口/jd/order/12345
公司的项目部署在nginx中,所以我直接改nginx的location到upstream负载均衡到相应的多个网关服务器,还是挺方便的。

2.token不被转发

zuul默认会过滤掉Authorization敏感词,所以token默认不会被转发到后端微服务去。
解决:

context.addZuulRequestHeader("Authorization", tokens);

网上另外有种在yml文件中配置的

zuul:
  sensitive-headers: Set-Cookie、Cookie、Host、Connection、Content-Length、Content-Encoding、Server、Transfer-Encoding、X-Application-Context

但是我用这个方式启动服务会报错,所以就选择第一中代码的方式了。

3.除了网关服务,其他微服务接口仍可以被访问

例如:我知道了微服务部署所在的ip端口,我就可以直接去访问该微服务的接口。
据我了解这个还需要整合一些权限框架去做,spring security和shiro之类的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值