阿里雲k8s ingress無法獲取真實ip


背景
業務架構:
Client->WAF->LB->ECS->容器
問題:在容器中獲取不到真實的客戶端公網IP

抓包分析
1.在ECS上的抓包分析,看到WAF已經將 真實客戶端地址放到了 x-Forwarded-For 的字段中傳給了ECS
image
2.在容器中抓包,看到一個x-Forwarded-For的字段是錯誤的
對應的IP為WAF的回源地址
image
3.與容器同學確認 ingress的行為

將真實的客戶端IP,放到了x-Original-Forwarded-For。而將WAF的回源地址放到了 x-Forwarded-For了。
處理方法
修改容器的配置文件
配置文件:

kube-system/nginx-configuration
修改命令:

kubectl -n kube-system edit cm nginx-configuration
添加內容:

compute-full-forwarded-for: "true"
forwarded-for-header: "X-Forwarded-For"
use-forwarded-headers: "true"
保存后立即生效。隨后ingress的添加真實的IP行為會與RFC一樣都依次添加到X-Forwarded-For中了。
更多參數參考這里。

業務程序需要調整獲取真實IP的字段為x-Original-Forwarded-For。

轉載自: https://yq.aliyun.com/articles/699074


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM