简介

Zuul是Netflix提供的一个开源的API网关服务器,SpringCloud对Zuul进行了整合和增强。服务网关Zuul聚合了所有微服务接口,并统一对外暴露,外部客户端只需与服务网关交互即可。相对于内部服务而言,能够防止其被外部客户端直接访问而暴露服务的敏感信息,起到了保护作用。除此之外,Zuul还可以实现身份认证、数据监控、动态路由等功能。

项目介绍

  1. sc-parent,父模块(请参照SpringCloud学习笔记(1):Eureka注册中心)
  2. sc-eureka,注册中心(请参照SpringCloud学习笔记(1):Eureka注册中心)
  3. sc-provider,提供者(请参照SpringCloud学习笔记(1):Eureka注册中心)
  4. sc-gateway,服务网关

使用Zuul构建服务网关

1.在父模块下创建子模块项目sc-gateway,pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">   <modelVersion>4.0.0</modelVersion>   <parent>     <groupId>com.cf</groupId>     <artifactId>sc-parent</artifactId>     <version>0.0.1-SNAPSHOT</version>   </parent>   <artifactId>sc-gateway</artifactId>      <dependencies>     <dependency>         <groupId>org.springframework.cloud</groupId>         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>     </dependency>     <dependency>         <groupId>org.springframework.cloud</groupId>         <artifactId>spring-cloud-starter-netflix-zuul</artifactId>     </dependency>   </dependencies> </project>

2.创建启动类gateway.GatewayApplication:

package gateway; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.zuul.EnableZuulProxy;  @SpringBootApplication @EnableZuulProxy public class GatewayApplication {     public static void main(String[] args) {         SpringApplication.run(GatewayApplication.class, args);     } }

@EnableZuulProxyh和@EnableZuulServer:

  1. @EnableZuulProxy是@EnableZuulServer的超集,@EnableZuulProxy包含@EnableZuulServer导入的所有过滤器。

  2. @EnableZuulProxy使用反向代理,@EnableZuulServer不使用任何代理。

3.创建application.yml:

server:   port: 8088  spring:   application:     name: sc-gateway      eureka:   client:     serviceUrl:       defaul