服务路由的默认规则
在Zuul快速入门案例中,我们尝试使用浏览器访问http://localhost:8835/eureka-consumer/hi?id=12
,虽然创建的gateway-zuul工程的配置文件中并没有相应的服务路由配置,但是却能够成功访问并且返回结果。原因就是Zuul有自己的默认服务路由规则。
默认情况下,Zuul会自动为Eureka服务注册中心的所有服务创建映射关系进行路由,这会使得一些我们不希望对外开放的服务也可能被外部访问到。当使用服务名称作为前缀路径时,实际上会匹配类似下面的默认路由配置:
zuul:
Routes:
eureka-consumer:
path: /eureka-consumer/
serviceId: eureka-consumer
如果不想使用默认的路由规则,可以在配置文件中加入下列内容,即可关闭所有默认的路由配置规则。
zuul:
ignored-services: '*'
使用上述方式关闭默认的路由配置后,此时我们需要在配置文件中逐个为需要路由的服务添加映射规则。当然可以使用path与serviceId 组合的配置方式,也可以使用更简洁的zuul.routes.<serviceId>=<path>配置方式,只有在配置文件中出现的映射规则会被创建路由,而从Eureka中获取的其他服务,Zuul将不会再为它们创建路由规则。