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

相关文章

Spring Cloud为Spring Boot应用程序提供Netflix OSS集成。 提供的功能模块包括服务发现(Eureka),断路...
Spring Cloud 学习笔记;maven配置;入门学习;基于Spring Boot 实现;服务端配置,客户端配置;
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的...
Spring中各种方式进行日期时间处理,有作用于单个实体的,也有作用于全局的,有作用于请求入参的,有作...
跨域资源共享(Cross-origin resource sharing)(CORS)是W3C的标准,大部分的浏览器都实现了这个标准...
Spring Boot使创建基于Spring的应用程序变得轻松,大部分的SpringBoot应用程序都只需要很少的Spring配置...