需要将网关服务也注册到注册中
引入依赖
<!-- nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
路由配置 (推荐)
server:
port: 8088
spring:
application:
name: api-gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8847
username: nacos
password: nacos
gateway:
routes:
- id: order_route # 路由唯一标识
# uri: http://localhost:8020 # 需要转发的地址
uri: lb://order-service # 需要转发的服务名称 order-service
# 断言规则 用于路由规则的匹配
predicates:
- Path=/order-serv/**
# http://localhost:8088/order-serv/order/add => http://localhost:8020/order-serv/order/add
filters:
- StripPrefix=1 # 转发去掉第一层路径
# http://localhost:8020/order-serv/order/add => http://localhost:8020/order/add
访问效果
自动发现
使用服务名称断言以及去除第一层
server:
port: 8088
spring:
application:
name: api-gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8847
username: nacos
password: nacos
gateway:
discovery:
locator:
enabled: true #是否启动自动失败nacos服务
# routes:
# - id: order_route # 路由唯一标识
# #uri: http://localhost:8020 # 需要转发的地址
# uri: lb://order-service # 需要转发的地址
# # 断言规则 用于路由规则的匹配
# predicates:
# - Path=/order-serv/**
# # http://localhost:8088/order-serv/order/add => http://localhost:8020/order-serv/order/add
# filters:
# - StripPrefix=1 # 转发去掉第一层路径
# # http://localhost:8020/order-serv/order/add => http://localhost:8020/order/add
访问效果
- 使用原来的 order-serv 无法访问
- 使用注册的服务名称可正常访问