1. 添加依赖
<dependencies>
<!-- Gateway正经依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- Nacos服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
</dependencies>
2. 配置文件
server:
port: 30000
spring:
application:
name: gateway
cloud:
nacos:
# Nacos配置项
discovery:
server-addr: localhost:8848
heart-beat-interval: 5000
heart-beat-timeout: 15000
cluster-name: Cluster-A
namespace: dev
group: myGroup
register-enabled: true
gateway:
discovery:
locator:
# 创建默认路由,以"/服务名称/接口地址"的格式规则进行转发
# Nacos服务名称本来就是小写,但Eureka默认大写
enabled: true
lower-case-service-id: true
# 跨域配置
globalcors:
cors-configurations:
'[/**]':
# 授信地址列表
allowed-origins:
- "http://localhost:8808"
# cookie, authorization认证信息
expose-headers: "*"
allowed-methods: "*"
allow-credentials: true
allowed-headers: "*"
# 浏览器缓存时间
max-age: 1000
此处注意跨域配置中的几个参数的含义。
参数 | 含义 |
---|---|
allowed-origins | 可以被信任的来源地址list |
expose-headers | Response Hearder 中可以被暴露的Header |
allowed-methods | 支持跨域的Http Method |
allowed-credentials | 跨域请求默认不带cookie |
allowed-headers | 允许接收的Request Header 属性 |
3. 定义路由规则
声明路由有三种方式,分别是JAVA代码、配置文件、和动态路由,此处使用JAVA代码声明
@Configuration
public class RoutesConfiguration {
@Bean
public RouteLocator declare(RouteLocatorBuilder builder) {
return builder.routes()
.route(route -> route
.path("/gateway/manage/**")
// stripPrefix 过滤器,将 path 访问路径中的第一个前置子路径删除掉
.filters(f -> f.stripPrefix(1))
// lb会负载均衡,后面是在nacos注册的服务名称
.uri("lb://manage-serv")
)
).build();
}
}
添加一个项目启动的类,启动之后,就可以作为一个网关了。
网友评论