[Springboot] 網域轉到Clourflare重定向後OpenFeign呼叫服務403的採坑經驗
編輯日期:2024-09-08
發布日期:2024-09-08
軟體開發
JAVA

事情是這樣的,
因為DC機器人林德Lindebot的網域前幾天收到信,ZeroSSL的第二個免費憑證要到期了,於是今天下午就抽空來做SSL憑證的更新。
(不得不說Clourflare的免費憑證真的很方便,在本站使用後真的感覺回不去之前到處找免費SSL的時候了)


步驟一直都很順利,就是照著之前本站的做法再做一遍而已,有空的話之後再做個流程教學。
總而言之Cloudflare的SSL加密完成、和原始伺服器的SSL憑證放到Nginx之後,
由於我機器人有分資料庫處理和機器人互動兩支服務,
原本Openfeign從機器人互動的服務呼叫資料庫處理的部分卻開始報錯,呼叫API的時候都會回傳Nginx的403 Error頁面

解決方法 🔗

事後想想,可能最根本的原因是因為我在@FeignClient宣告裡面的url設置是設置網域名稱,導致其呼叫FeignClient的時候是默認從Cloudflare重定向後的IP發出API呼叫,
而由於這個專案的設計上安控算是比較土炮的作法,直接用擋IP的方式阻擋呼叫,導致這邊API呼叫會被Nginx的IP偵測擋住造成403。


後來的作法十分簡單,在同網路內呼叫@Feignclient的url設定不設置完整的網域/IP。
像是我由於採用docker-compose部署,且服務是在同一docker network當中,
於是這邊就是設定url = http://<container-name>:<port>/<context-path>這樣的做法,
改完之後也確實可以正常連線了,可以說是自己造的坑自己踩,之後應該也會學到教訓了,


同網路下的url設定,盡量用內部的呼叫方式,否則像是碰到重定向的IP地址會從不同地方呼叫的作法,很容易因為防火牆或其他硬擋IP的設定導致連線失敗


如果上面個人推論出來的解法有用詞或概念上的錯誤歡迎指正。

其他也有看到不採用OpenFeign而是採用HttpClient、OkHttp等的方式,但是因為我這邊不太想改結構,所以就直接改url收工完事