SpringCloud 服務(wù)網(wǎng)關(guān)路由規(guī)則的坑及解決
一、場景簡述
筆者最近用到SpringCloud 服務(wù)網(wǎng)關(guān)的時候,進行服務(wù)網(wǎng)關(guān)的路由測試,發(fā)現(xiàn)無法路由自己設(shè)置的規(guī)則,測試的時候如下

通過錯誤排查發(fā)現(xiàn),原來是路由規(guī)則寫錯了!
路由規(guī)則如下(錯誤)
#端口
server:
port: 8080
spring:
#該配置文件中的配置,對應(yīng)的服務(wù)名稱是wc-gateway
application:
name: wc-gateway
profiles:
active: dev
#服務(wù)網(wǎng)關(guān)配置
zuul:
host:
connect-timeout-millis: 60000
socket-timeout-millis: 60000
#路由規(guī)則
routes:
api:
path: /api/user/**
serviceId: wc-client-user
二、解決方案
只需要將routes及以下的屬性左移,與host相等級別即可
修改后的路由規(guī)則
#端口
server:
port: 8080
spring:
#該配置文件中的配置,對應(yīng)的服務(wù)名稱是wc-gateway
application:
name: wc-gateway
profiles:
active: dev
#服務(wù)網(wǎng)關(guān)配置
zuul:
host:
connect-timeout-millis: 60000
socket-timeout-millis: 60000
#路由規(guī)則
routes:
api:
path: /api/user/**
serviceId: wc-client-user
好了,問題解決,我們重啟應(yīng)用測試,測試結(jié)果和預(yù)期一樣。

SpringCloud 進階之Zuul(路由網(wǎng)關(guān))
1. Zuul(路由網(wǎng)關(guān))
Zuul 包含了對請求的路由和過濾兩個最主要的功能;
路由功能:負責將外部請求轉(zhuǎn)發(fā)到具體的微服務(wù)實例上,是實現(xiàn)外部訪問統(tǒng)一入口的基礎(chǔ);
過濾功能:負責對請求的處理過程進行干預(yù),是實現(xiàn)請求校驗,服務(wù)聚合等功能的基礎(chǔ);
Zuul 服務(wù)最終還是會注冊進Eureka;
1.1 路由基本配置
新建 microservicecloud-zuul-gateway-9527
// pom.xml
<!-- zuul 路由網(wǎng)關(guān) -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
// application.yml
server:
port: 9527
spring:
application:
name: microservicecloud-zuul-gateway
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: gateway-9527.com
prefer-ip-address: true
info:
app.name: noodles-microcloud
company.name: www.google.com
build.artifactId: $project.artifactId$
build.version: $project.version$
// hosts 修改: 127.0.0.1 myzuul.com
// 主啟動類
@SpringBootApplication
@EnableZuulProxy
public class Zuul_9527_StartSpringCloudApp {
public static void main(String[] args) {
SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);
}
}
// 啟動
// 三個Eureka集群
// microservicecloud-provider-dept-8001
// 路由
// 測試訪問:
// 不用路由: http://localhost:8001/dept/get/1
// 使用路由: http://myzuul.com:9527/microservicecloud-dept/dept/get/1

1.2 Zuul 路由訪問映射規(guī)則
// microservicecloud-zuul-gateway-9527
// 修改 application.yml
zuul:
ignored-services: microservicecloud-dept # 將原有路由關(guān)閉
routes:
prefix: /test # 設(shè)置統(tǒng)一公共前綴, 訪問地址:http://myzuul.com:9527/test/mydept/dept/get/1
mydept.serviceId: microservicecloud-dept
mydept.path: /mydept/**
// 修改之前,訪問地址: http://myzuul.com:9527/microservicecloud-dept/dept/get/1
// 修改之后,訪問地址: http://myzuul.com:9527/mydept/dept/get/1
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的CyclicBarrier循環(huán)柵欄解析
這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄解析,從字面上的意思可以知道,這個類的中文意思是"循環(huán)柵欄",大概的意思就是一個可循環(huán)利用的屏障,它的作用就是會讓所有線程都等待完成后才會繼續(xù)下一步行動,需要的朋友可以參考下2023-12-12
關(guān)于spring版本與JDK版本不兼容的問題及解決方法
這篇文章主要介紹了關(guān)于spring版本與JDK版本不兼容的問題,本文給大家?guī)砹私鉀Q方法,需要的朋友可以參考下2018-11-11
springboot log4j2不能打印框架錯誤日志的解決方案
這篇文章主要介紹了springboot log4j2不能打印框架錯誤日志的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
解決使用redisTemplate高并發(fā)下連接池滿的問題
這篇文章主要介紹了解決使用redisTemplate高并發(fā)下連接池滿的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
使用SpringBoot+AOP實現(xiàn)可插拔式日志的示例代碼
這篇文章主要介紹了使用SpringBoot+AOP實現(xiàn)可插拔式日志的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2019-07-07
mybatis-plus多表聯(lián)查join的實現(xiàn)
本文主要介紹了mybatis-plus多表聯(lián)查join的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2023-01-01
java使用xstream實現(xiàn)xml文件和對象之間的相互轉(zhuǎn)換
xml是一個用途比較廣泛的文件類型,在java里也自帶解析xml的包,但是本文使用的是xstream來實現(xiàn)xml和對象之間的相互轉(zhuǎn)換,xstream是一個第三方開源框架,使用起來比較方便,對java?xml和對象轉(zhuǎn)換相關(guān)知識感興趣的朋友一起看看吧2023-09-09

