1. 添加依賴
<dependencies>
<!-- Gateway正經(jīng)依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- Nacos服務(wù)發(fā)現(xiàn) -->
<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:
# 創(chuàng)建默認(rèn)路由,以"/服務(wù)名稱/接口地址"的格式規(guī)則進(jìn)行轉(zhuǎn)發(fā)
# Nacos服務(wù)名稱本來就是小寫,但Eureka默認(rèn)大寫
enabled: true
lower-case-service-id: true
# 跨域配置
globalcors:
cors-configurations:
'[/**]':
# 授信地址列表
allowed-origins:
- "http://localhost:8808"
# cookie, authorization認(rèn)證信息
expose-headers: "*"
allowed-methods: "*"
allow-credentials: true
allowed-headers: "*"
# 瀏覽器緩存時間
max-age: 1000
此處注意跨域配置中的幾個參數(shù)的含義。
| 參數(shù) | 含義 |
|---|---|
| allowed-origins | 可以被信任的來源地址list |
| expose-headers | Response Hearder 中可以被暴露的Header |
| allowed-methods | 支持跨域的Http Method |
| allowed-credentials | 跨域請求默認(rèn)不帶cookie |
| allowed-headers | 允許接收的Request Header 屬性 |
3. 定義路由規(guī)則
聲明路由有三種方式,分別是JAVA代碼、配置文件、和動態(tài)路由,此處使用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會負(fù)載均衡,后面是在nacos注冊的服務(wù)名稱
.uri("lb://manage-serv")
)
).build();
}
}
添加一個項目啟動的類,啟動之后,就可以作為一個網(wǎng)關(guān)了。