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。
推薦閱讀:
- 深入剖析網關gateway原理
- SpringCloud超詳細講解微服務網關Gateway
- Gateway網關工作原理及使用方法
- SpringCloud Gateway的基本入門和註意點詳解
- Spring Cloud Gateway去掉url前綴