Spring Gateway静态文件路由
Spring gateway路由简介
早期的Spring cloud使用的路由框架是Spring Zuul(spring-cloud-starter-netflix-zuul),采用的是blocking model。在最新的Spring cloud框架中,Spring Gataway(spring-cloud-starter-gateway) 被用来替代Spring Zuul,它采用的是non-blocking model,可以提供更好的路由性能。
无论使用哪一种Spring cloud路由框架,应用的路由信息都是通过环境变量进行配置(configMap,applicaiton.yml或application.property或者在运行时通过-D option指定)。对应Spring zuul,路由的入口是spring.zuul.routes, Spring gateway的是 spring.cloud.gateway.routes.
路由到其他微服务的API路由
路由到其他微服务的配置,通才采用的是micro-service-id的方式(注册在同一个Service Registry中,可被spring gateway微服务发现的服务id)
Spring zuul
spring:
zuul:
routes:
test-service:
service-id: <micro-service-id>
sensitive-headers:
path: /api/test-service/**
Spring Gateway
spring:
cloud:
gateway:
routes:
- id: test-service
uri: lb://<micro-service-id>
predicates:
- Path=/api/test-service/**
静态文件服务
通常会将如下配置加到路由属性配置的最后一条,做为默认配置,当前面的路由规则都没有被触发的情况下,使用forward的方式,foward到当前微服务(spring gateway)的服务跟目录,匹配静态资源和spring gateway的本地API(静态资源是指放在static目录中的所有的文件)
Spring zuul
spring:
zuul:
routes:
local-service:
path: /**
url: forward:/
Spring Gateway
spring:
cloud:
gateway:
routes:
- id: local-service
uri: forward:/
predicates:
- Path=/**
静态文件的缓存配置
当发布一下小的项目的时候,可以把前段的静态资源打包到gateway的static目录,通过gateway作为入口,提供前端资源的访问,同时作为服务路由,提供所有下游微服务的统一入口,静态资源文件的缓存可以通过如下配置属性配置
spring:
resources:
cache-period: 28800
小结
当管理一个小型项目时,可以使用spring boot的静态资源的方式,打包前端资源,并把它作为gateway的一部分发布,本文提供了一种配置前端资源的路由方式和页面缓存的配置方式。