一、引入nacos和gateway依赖包:
<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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
注意:不需要引入web依赖,否则启动服务会报错。因为gateway内部集成了Netty服务器
二、yml文件配置:
server:
port: 8000
spring:
application:
name: gateway-server
cloud:
# nacos 注册中心
nacos:
discovery:
server-addr: http://localhost:8848
username: nacos
password: nacos
# 动态路由
gateway:
discovery:
locator:
enabled: true # 开启服务发现让gateway可以发现注册中心的服务,解析微服务名称为主机名和端口,实现动态路由
# lowerCaseServiceId: true # 请求服务是小写的时候改成true(默认为false轻微服务必须是大写)
# 路线
routes:
# 账户模块服务
- id: seata-account-service # 路由Id,没有规则限制,但要唯一
uri: lb://seata-account-service # 断言成功后提供的路由地址,lb为负载均衡
predicates:
- Path=/account/** # 断言规则,注意需要和 tomcat servlet容器上下文路径对应
# 订单模块服务
- id: seata-order-service # 路由Id,没有规则限制,但要唯一
uri: lb://seata-order-service # 断言成功后提供的路由地址,lb为负载均衡
predicates:
- Path=/order/** # 断言规则,注意需要和 tomcat servlet容器上下文路径对应
# 库存模块服务
- id: seata-storage-service # 路由Id,没有规则限制,但要唯一
uri: lb://seata-storage-service # 断言成功后提供的路由地址,lb为负载均衡
predicates:
- Path=/storage/** # 断言规则,注意需要和 tomcat servlet容器上下文路径对应
# 处理跨域请求
globalcors:
corsConfigurations:
'[/**]':
allowedHeaders: "*"
allowedOrigins: "*"
allowCredentials: true
allowedMethods:
- GET
- POST
- DELETE
- PUT
- OPTION
注意:predicates的断言规则路径需要和服务的 tomcat servlet容器上下文路径对应,否则无法路由