新建maven模块
在pom.xml中引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
依赖构建好后,创建启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class,args);
}
}
网关的作用是转发来自客户端的请求到各个服务端,需要有各个服务端的地址。可以用固定地址,也可以用注册中心。这里采用nacos作为注册中心,因此需要添加nacos注册发现的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
创建配置文件样例如下
server:
port: 10010
spring:
application:
name: gateway
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848
gateway:
routes:
- id: user-service # 路由id唯一就行,可以自定义命名
uri: lb://userservice #路由目标地址 lb就是负载均衡
predicates: #路由断言,也就是判断
- Path=/user/**
- id: order-service
uri: lb://orderservice
predicates:
- Path=/order/**
- Before=2031-01-20T17:42:47.789+07:00[Asia/Shanghai]
default-filters:
- AddRequestHeader=gateway,0001
globalcors: # 全局的跨域处理
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
corsConfigurations:
'[/**]':
allowedOrigins: # 允许哪些网站的跨域请求
- "*"
- "http://www.baidu.com"
allowedMethods: # 允许的跨域ajax的请求方式
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeaders: "*" # 允许在请求中携带的头信息
allowCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这次跨域检测的有效期
主要有三块配置:
(1)路由配置,即配置各个服务端的地址和路径通配符
(2)过滤器配置
比如加请求头,比如只允许post请求等等
(3)跨域配置