Spring Cloud核心组件(五):Zuul

一. Zuul是什么?
Spring Cloud核心组件(五):Zuul_第1张图片

二. Zuul路由基本配置
(1)修改hosts文件,添加如下映射:
127.0.0.1 myzuul.com

(2) 新建Gateway工程

server: 
  port: 9527
 
spring: 
  application:
    name: microservice-zuul-gateway
 
eureka: 
  client: 
    service-url: 
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
  instance:
    instance-id: gateway-9527.com
    prefer-ip-address: true 
@SpringBootApplication
@EnableZuulProxy
public class Application_Gateway_9527
{
    public static void main( String[] args )
    {
        SpringApplication.run(Application_Gateway_9527.class, args);
    }
}

(3) 启动Eureka集群,服务提供方,Gateway服务
不使用路由直接访问服务提供方:http://localhost:8001/product/get/1
通过网关路由访问服务提供方:http://myzuul.com:9527/microservice-product/product/get/2

三. Zuul路由访问映射规则
(1)给真实服务设置代理名称
在生产环境中,我们不想暴露真实的服务名称让外界知道,那么可以通过Zuul的访问映射设置代理名称。

zuul:
  routes:
    myproduct.serviceId: microservicecloud-dept
    myproduct.path: /myproduct/**

此时我们可以如下访问:
http://myzuul.com:9527/myproduct/product/get/2

(2) 上面的配置后,还是可以通过真实服务名称访问
http://myzuul.com:9527/microservice-product/product/get/2,
如果想禁止真实服务名称访问,需要加上ignored-services属性配置:

zuul:
  ignored-services: microservice-product
  routes:
    myproduct.serviceId: microservice-product
    myproduct.path: /myproduct/**

如果想对所有的服务都禁止真实服务名称访问,则修改如下:

zuul:
  #ignored-services: microservice-product
  ignored-services: "*"
  routes:
    myproduct.serviceId: microservice-product
    myproduct.path: /myproduct/**

(3) 设置统一公共前缀

zuul:
  #ignored-services: microservice-product
  ignored-services: "*"
  prefix: /hong
  routes:
    myproduct.serviceId: microservice-product
    myproduct.path: /myproduct/**

此时只有如下访问有效:
http://myzuul.com:9527/hong/myproduct/product/get/2

你可能感兴趣的:(Spring-Cloud)