SpringCloud-6-Zuul

Zuul

1. 概述

  • Zuul包含了对请求的路由过滤两个最主要的功能
  • Zuul和Eureka进行整合, 将Zuul自身注册为Eureka服务治理下的应用, 同时从Eureka中获得其他微服务的信息, 也即以后的访问微服务是通过Zuul跳转后获得
  • Zuul服务最终还是回注册进Eureka
  • 提供: 代理 + 路由 + 过滤 三大功能

2. 使用Zuul

1. 导入依赖

由于Zuul要注册到Eureka中, 因此需要同时导入Eureka和Zuul的依赖

<!--Eureka-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>
<!--Zuul-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zuul</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>

2. 配置Zuul

server:
  port: 9527

spring:
  application:
    name: springcloud-zuul

eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  instance:
    instance-id: zuul_9572.com
    prefer-ip-address: true

info:
  app.name: wang-springcloud
  company.name: wangStudy.com
  
zuul:
  routes:
    mydept: 
      serviceId: springcloud-provider-dept
      path: /mydept/**
#  ignored-services: springcloud-provider-dept #不能再使用这个路径访问了
  ignored-services: "*"   #隐藏全部的真实服务名
  prefix: /wang   #设置公共的访问前缀

我们这里使用9527端口

注意

  • Zuul要注册到Eureka中, 因此要配置服务名以及Eureka发现
  • 在zuul的配置中, serviceId属性指定一个微服务的名字, path指定这个微服务被zuul重定向后的位置, 这样就可以实现隐藏我们微服务的真实的名称
  • 在zuul的配置中, ignored-services表示要隐藏的服务, 指定了某个服务之后, 就不能用真实的服务名访问了, 提高了安全性. 我们可以用 "*" 通配符来隐藏全部的微服务名称
  • 在zuul的配置中, prefix指定了前缀, 一旦设定了前缀, 必须加上前缀才能访问

3. 配置主启动类

package com.wang.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
//开启Zuul
@EnableZuulProxy
public class ZuulApplication_9527 {
    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication_9527.class, args);
    }
}

在启动类上加上 @EnableZuulProxy 注解即可使Zuul生效

3. 测试

为了使得访问更加真实, 我们在hosts中将localhost配置为了www.wangStudy.com

发现, 访问 http://www.wangstudy.com:9527/wang/mydept/dept/list 可以得到预期的结果

image-20201013101301770

而访问不带前缀或者直接访问微服务的名称, 则会报告404错误

image-20201013101359795

原文地址:https://www.cnblogs.com/wang-sky/p/13807228.html