欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring cloud gateway設(shè)置context-path服務(wù)路由404排查過程

 更新時(shí)間:2024年08月14日 10:21:53   作者:y&m  
這篇文章主要介紹了Spring cloud gateway設(shè)置context-path服務(wù)路由404排查過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、背景

最近做網(wǎng)關(guān)重構(gòu)

技術(shù)選型為spring cloud gateway

采用consul作為配置中心和注冊(cè)中心

秉承不重啟原則,網(wǎng)關(guān)內(nèi)部實(shí)現(xiàn)動(dòng)態(tài)路由機(jī)制

采用定時(shí)任務(wù)定時(shí)更新網(wǎng)關(guān)路由信息

二、服務(wù)信息

  • 微服務(wù)網(wǎng)關(guān):spring-cloud-gateway
  • 微服務(wù):order-service、user-service

三、問題描述

因?yàn)榫W(wǎng)關(guān)服務(wù)集成了knife4j

因此可以通過訪問http://網(wǎng)關(guān)ip:port/doc.html

即可訪問所有在同一個(gè)注冊(cè)中心的服務(wù)的knife4j信息

但是實(shí)際訪問時(shí)用戶服務(wù)相關(guān)接口報(bào)404錯(cuò)誤

四、問題排查

1、排查發(fā)現(xiàn)order-service未設(shè)置server.servlet.context-path,user-service有設(shè)置;

2、驗(yàn)證context-path的影響發(fā)現(xiàn)在路由設(shè)置時(shí)path字段值必須加前綴再截取才可以正常路由;

3、由于公司網(wǎng)關(guān)是既有產(chǎn)品,當(dāng)前是技術(shù)框架重構(gòu),因此不能改動(dòng)原來接口訪問路徑,因此不可以在原有路徑前面再加前綴;

排查源碼發(fā)現(xiàn)請(qǐng)求會(huì)經(jīng)過

  • FilteringWebHandler的filter方法,此方法在路由過程中會(huì)走12個(gè)過濾器,其中第5個(gè)過濾器
  • RewritePathGatewayFilterFactory中的apply方法會(huì)匹配服務(wù)啟動(dòng)時(shí)加載的regexp正則,從而對(duì)服務(wù)path進(jìn)行改寫。

源碼如下:

五、解決方案

1)若配置路由URI為lb,則注冊(cè)中心服務(wù)名稱不能和server.servlet.context-path名稱一致,否則contextPath會(huì)被改寫為空字符串;

2)若注冊(cè)中心和server.servlet.context-path必須一致,則斷言中設(shè)置Path時(shí)需在contextPath前包裝一層前綴,且Filter中需截取第一個(gè)字符串;

3)禁止gateway網(wǎng)關(guān)主動(dòng)從consul拉取路由信息并設(shè)置默認(rèn)過濾器,該操作會(huì)設(shè)置默認(rèn)過濾規(guī)則,reWritePath匹配正則修改請(qǐng)求路徑

  • 在啟動(dòng)類添加注解:
@SpringBootApplication( exclude = org.springframework.cloud.gateway.discovery.GatewayDiscoveryClientAutoConfiguration.class) 

4)推薦使用

  • 重寫過濾鏈(只需添加如下配置):
spring.cloud.gateway.discovery.locator.filters[0]=PreserveHostHeader

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中的ReentrantLock原理解析

    Java中的ReentrantLock原理解析

    這篇文章主要介紹了Java中的ReentrantLock原理解析,ReentrantLock是Java中的一個(gè)線程同步工具,它提供了比synchronized更靈活和強(qiáng)大的功能。它是一個(gè)可重入的互斥鎖,意味著同一個(gè)線程可以多次獲取該鎖,而不會(huì)發(fā)生死鎖,需要的朋友可以參考下
    2023-11-11
  • maven依賴包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bindings處理方法

    maven依賴包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bi

    這篇文章主要給大家介紹了關(guān)于maven依賴包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bindings的處理方法,這個(gè)問題通常是因?yàn)轫?xiàng)目中存在多個(gè)SLF4J的實(shí)現(xiàn)綁定(bindings)導(dǎo)致的沖突,需要的朋友可以參考下
    2024-02-02
  • java服務(wù)自動(dòng)停止原因查找方式

    java服務(wù)自動(dòng)停止原因查找方式

    這篇文章主要介紹了java服務(wù)自動(dòng)停止原因查找方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 詳解@ConfigurationProperties實(shí)現(xiàn)原理與實(shí)戰(zhàn)

    詳解@ConfigurationProperties實(shí)現(xiàn)原理與實(shí)戰(zhàn)

    這篇文章主要介紹了詳解@ConfigurationProperties實(shí)現(xiàn)原理與實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Spring定時(shí)任務(wù)實(shí)現(xiàn)與配置(一)

    Spring定時(shí)任務(wù)實(shí)現(xiàn)與配置(一)

    這篇文章主要為大家詳細(xì)介紹了Spring定時(shí)任務(wù)的實(shí)現(xiàn)與配置第一篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作詳解

    SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作詳解

    這篇文章主要介紹了SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測(cè)試的操作步驟,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • Java Spring Boot實(shí)現(xiàn)簡(jiǎn)易掃碼登錄詳解

    Java Spring Boot實(shí)現(xiàn)簡(jiǎn)易掃碼登錄詳解

    這篇文章主要為大家詳細(xì)介紹了java Spring Boot實(shí)現(xiàn)app掃碼登錄功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-09-09
  • SpringBoot3中token攔截器鏈的設(shè)計(jì)與實(shí)現(xiàn)步驟

    SpringBoot3中token攔截器鏈的設(shè)計(jì)與實(shí)現(xiàn)步驟

    本文介紹了spring boot后端服務(wù)開發(fā)中有關(guān)如何設(shè)計(jì)攔截器的思路,文中通過代碼示例和圖文講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-03-03
  • Java?設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解單例模式

    Java?設(shè)計(jì)模式以虹貓藍(lán)兔的故事講解單例模式

    單例模式(Singleton?Pattern)是?Java?中最簡(jiǎn)單的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式
    2022-03-03
  • AsyncHttpClient的TimeoutTimerTask連接池異步超時(shí)

    AsyncHttpClient的TimeoutTimerTask連接池異步超時(shí)

    這篇文章主要為大家介紹了AsyncHttpClient的TimeoutTimerTask連接池異步超時(shí)源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評(píng)論