spring cloud gateway轉發服務報錯的解決

spring cloud gateway轉發服務報錯

錯誤如下

javax.net.ssl.SSLHandshakeException: error:1000009c:SSL routines:OPENSSL_internal:HTTP_REQUEST

在spring cloud gateway項目中,使用瞭SSL驗證後,為瞭增加系統性能,引入瞭netty-tcnative-boringssl-static依賴來增加性能後,在項目中一些http請求訪問gateway時,就會報以上錯誤。

解決方案

檢查系統中是否有http請求去訪問gateway,將http請求改為https。

使用gateWay做為網關遇到的404問題

GateWay有幾個重要的配置,也是最重要的東西

gateway.discovery.enable:true,開啟服務發現路由,意思是在nacos等註冊中心中可以發現服務

routes路由,可以理解為模塊,在服務中心中註冊的每一個模塊,

  • id:唯一的沒有什麼特別意義,與服務名同名即可
  • Uri:註冊中心中服務的名字,通過這個名字來轉發,也可以是地址。
  • Predicates:-Path=/a/**

斷言,其實就是匹配路徑,匹配方式有很多種,手機不太好敲,大傢可以去搜一下

我在項目中訪問gateWay服務的時候

GateWay服務端口是7777稱為A

通過GateWay服務要訪問到的端口是8888稱為B

http://localhost:7777/a/xxxx按理說是可以訪問到B服務的,A服務也去註冊中心中去找配置中斷言為a的uri服務瞭,然後就一直是404,然後看瞭一下文檔,原來是自己粗心瞭

我訪問的地址是/a/xx,去找這個服務瞭,但是並沒有發現這個路徑,所以404瞭

還需要一個配置,來讓gateWay自動去掉一節路徑filters: -StripPrefix=1

前端訪問的沒改,但是後端gateway會自動去掉路徑中間的a。

大功告成!以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: