Springcloud GateWay網(wǎng)關配置過程圖解
一般為了不暴露自己的端口信息等,會選擇架構(gòu)一個網(wǎng)關在前面進行阻擋,起到保護的作用。附上一張工作示列圖。

1.配置網(wǎng)關9527
gateway作為網(wǎng)關需要和其他的應用一樣需要注冊進eureka中進行管理,先創(chuàng)建應用gateway9527
pom文件,關鍵是gateway依賴
<dependencies>
<dependency>
<groupId>com.bai</groupId>
<artifactId>cloud-api-common</artifactId>
<version>${project.version}</version>
</dependency>
<!--gateway-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--eureka client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--熱部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
yml文件配置
server:
port: 9527
spring:
application:
name: cloud-gateway
cloud:
gateway:
discovery:
locator:
enabled: true # 開啟從注冊中心動態(tài)創(chuàng)建路由的功能,利用微服務名稱進行路由
routes:
- id: payment_route # 路由的id,沒有規(guī)定規(guī)則但要求唯一,建議配合服務名
#匹配后提供服務的路由地址
#uri: http://localhost:8001
uri: lb://cloud-payment-service
predicates:
- Path=/payment/get/** # 斷言,路徑相匹配的進行路由
- id: payment_route2
#uri: http://localhost:8001
uri: lb://cloud-payment-service
predicates:
- Path=/payment/sp/** #斷言,路徑相匹配的進行路由
eureka:
instance:
hostname: cloud-gateway-service
client:
fetch-registry: true
register-with-eureka: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
主啟動類正常配置
@SpringBootApplication
@EnableEurekaClient
public class GateWay9527 {
public static void main(String[] args) {
SpringApplication.run(GateWay9527.class,args);
}
}
2.配置路由兩種方式
1)yml文件格式(推薦)
spring:
application:
name: cloud-gateway
cloud:
gateway:
discovery:
locator:
enabled: true # 開啟從注冊中心動態(tài)創(chuàng)建路由的功能,利用微服務名稱進行路由
routes:
- id: payment_route # 路由的id,沒有規(guī)定規(guī)則但要求唯一,建議配合服務名
#匹配后提供服務的路由地址
#uri: http://localhost:8001
uri: lb://cloud-payment-service
predicates:
- Path=/payment/get/** # 斷言,路徑相匹配的進行路由
- id: payment_route2
#uri: http://localhost:8001
uri: lb://cloud-payment-service
predicates:
- Path=/payment/sp/** #斷言,路徑相匹配的進行路由
- After=2020-11-09T11:09:52.794+08:00[Asia/Shanghai]
- Cookie=username,bai #帶Cookie,并且username的值為bai
# - Header=X-Request-Id,\d+ #請求頭要有 X-Request-Id屬性并且值為整數(shù)的正則表達式
2)通過config配置類實現(xiàn)
@Configuration
public class RouteConfig {
@Bean
public RouteLocator customerRoute(RouteLocatorBuilder builder){
RouteLocatorBuilder.Builder routes = builder.routes();
routes.route("payment_route1",
r -> r.path("/guonei").uri("http://news.baidu.com/guonei")).build();
return routes.build();
}
@Bean
public RouteLocator bokeRoute(RouteLocatorBuilder builder){
RouteLocatorBuilder.Builder routes = builder.routes();
routes.route("payment_route2",r->r.path("/boke").uri("http://www.cnblogs.com/lin530/")).build();
return routes.build();
}
}
3.斷言(Predicate)
相當于多種限制,只有通過驗證才能夠訪問到對應的方法
- id: payment_route2
#uri: http://localhost:8001
uri: lb://cloud-payment-service
predicates:
- Path=/payment/sp/** #斷言,路徑相匹配的進行路由
- After=2020-11-09T11:09:52.794+08:00[Asia/Shanghai]
- Cookie=username,bai #帶Cookie,并且username的值為bai
# - Header=X-Request-Id,\d+ #請求頭要有 X-Request-Id屬性并且值為整數(shù)的正則表達式
不同的方法可以配置不同的斷言,此處的斷言需要滿足路徑對,after時間后,cookie帶上正確的用戶名才可以訪問到,用cmd測試

其他還有很多斷言,請對照文檔自行研究
4)過濾(filter)
對訪問加上限制,通過驗證才可以訪問
新建過濾配置類
@Component
@Slf4j
public class GatewayGlobalFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
log.info("***time is :"+new Date());
String uname = exchange.getRequest().getQueryParams().getFirst("uname");
if(uname==null){
log.info("沒有用戶名,出現(xiàn)錯誤:o(╥﹏╥)o");
exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
return exchange.getResponse().setComplete();
}
return chain.filter(exchange);
}
/*
設置過濾器優(yōu)先級,越小優(yōu)先級越大
*/
@Override
public int getOrder() {
return 0;
}
}
訪問方式帶上參數(shù),

本篇所有代碼均在GitHub:
https://github.com/MaTsukun/springcloud2020
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 詳解spring cloud構(gòu)建微服務架構(gòu)的網(wǎng)關(API GateWay)
- SpringCloud-Gateway網(wǎng)關的使用實例教程
- spring cloud 使用Zuul 實現(xiàn)API網(wǎng)關服務問題
- 詳解Spring Cloud Zuul 服務網(wǎng)關
- SpringCloud實戰(zhàn)之Zuul網(wǎng)關服務
- springcloud gateway網(wǎng)關服務啟動報錯的解決
- SpringCloud的Gateway網(wǎng)關詳解
- 淺談Spring Cloud中的API網(wǎng)關服務Zuul
- SpringCLoud搭建Zuul網(wǎng)關集群過程解析
- Spring Cloud 2026 網(wǎng)關模式實現(xiàn)示例
相關文章
Mybatis調(diào)用MySQL存儲過程的簡單實現(xiàn)
本篇文章主要介紹了Mybatis調(diào)用MySQL存儲過程的簡單實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04
Feign調(diào)用中的兩種Header傳參方式小結(jié)
這篇文章主要介紹了Feign調(diào)用中的兩種Header傳參方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
Java內(nèi)存分配與JVM參數(shù)詳解(推薦)
本文詳解JVM內(nèi)存結(jié)構(gòu)與參數(shù)調(diào)整,涵蓋堆分代、元空間、GC選擇及優(yōu)化策略,幫助開發(fā)者提升性能、避免內(nèi)存泄漏,本文給大家介紹Java內(nèi)存分配與JVM參數(shù)詳解,感興趣的朋友一起看看吧2025-06-06
java8中定時任務最佳實現(xiàn)方式(實現(xiàn)原理)
這篇文章主要介紹了java8中定時任務最佳實現(xiàn)方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-12-12
CountDownLatch源碼解析之countDown()
這篇文章主要為大家詳細解析了CountDownLatch源碼之countDown方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04

