Gateway网关进行路由转发的原理:
将gateway注册到nacos注册中心,使用默认规则可以从nacos 访问其他服务,默认规则使用简单,但功能也相当较弱。
默认规则:
http://网关的地址:网关的端口号/服务名/**
服务名 默认为nacos注册的服务点的大写,可以修改成小写
配置使用GateWay网关的方法
1. 引入pom坐标
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- 从注册中心进行服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 向注册中心进行服务注册 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
2. 配置yml文件访问nacos
连到nacos上,再把具体的配置写在nacos上
3. nacos的配置
server:
port: 8090
spring:
application:
name: service-gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
gateway:
discovery:
locator:
#开启服务发现功能,从注册中心获取服务列表,(nacos->服务管理->服务列表)
#默认服务名称需要为大写,可以通过配置lower-case-service-id: true 改变这一规则
enabled: true
#配置服务名使用小写
lower-case-service-id: true
#配置配置
logging:
level:
#trace,debug,info
org.pringframework.cloud.gateway: trace #便于跟踪调试,生产环境最好不用
org.springframework.http.server.reactive: debug
org.springframework.web.reactive: debug
reactor.ipc.netty: debug
4. 设置启动类
5. 添加一些路由的校验
跨域的配置
Sential限流
gateway网关的拦截器,对服务进入Controller之前的拦截和执行完的操作
Pre和Post