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

K8S下http請求在ingress和nginx間無限循環(huán)的問題及解決

 更新時間:2025年07月10日 08:53:42   作者:bruce128  
文章描述了UAT環(huán)境中因Nginx與IngressController代理循環(huán)導致400錯誤的排查過程,發(fā)現(xiàn)proxy_set_header Host配置引發(fā)Host頭攜帶Nginx域名,導致請求反復轉發(fā),最終X-Forwarded-For頭溢出,解決方法是移除該配置

現(xiàn)象

應用發(fā)布uat后,某個接口的請求一直報

400 Bad Request Request Header Or Cookie Too Large

排查過程

1 根據(jù)錯誤提示,按照網(wǎng)上的教程,在nginx的配置里增加對應的配置

    large_client_header_buffers 4 1M;
    client_header_buffer_size 10M;

2 重啟nginx,再次請求,依然是這個報錯,但是nginx的日志明顯變長了

3 觀察nginx的日志,發(fā)現(xiàn)最后一個變量$http_x_forwarded_for特別的不正常,十分的長。觀察到請求在兩個服務器之間不斷的循環(huán),一直到header的長度被撐爆。這兩個服務器,一個是這臺nginx本身,另一個是ingress controller。

4 查看對應的nginx的配置。proxy_pass轉發(fā)到的是域名,這個域名是解析到了ingress controller 的ip上的。

    location ~ ^/workflow-alogrithm/ {
        proxy_set_header Host $http_host;
        client_max_body_size 20M;
        proxy_set_header  X-Real-IP $http_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://***-uat.***.com;
    }
    

5 由于配置了 proxy_set_header Host $http_host;,請求ingress的時候請求頭Host攜帶的是這臺nginx掛的域名,ingress轉發(fā)的時候又會根據(jù)這個Host轉發(fā)到我的這臺nginx上,于是形成了一個無限循環(huán)。一直到X-Forwarded-For 變量的長度撐爆了請求頭。

PS, nginx是根據(jù)Host請求頭來把請求路由到對應的server塊的,參考nginx官方文檔 https://nginx.org/en/docs/http/request_processing.html

6 proxy_set_header Host $http_host;去掉這個配置,重啟。問題修復

K8S網(wǎng)絡請求拓撲

ingress controller負責k8s外部流量到k8s內部流量的轉發(fā)。

ingress會根據(jù)host判斷請求應該走哪個server(選擇nginx作為ingress controller的情況下)。

k8s內部服務之間的流量轉發(fā),推薦用service,別用dns解析到ingress的域名,避免導致無限循環(huán),少一次網(wǎng)絡轉發(fā),性能也更好。

總結

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

相關文章

  • kubernetes日志備份解決ELK中日志丟失問題

    kubernetes日志備份解決ELK中日志丟失問題

    這篇文章主要為大家介紹了kubernetes日志備份方案的細節(jié)探究分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Rainbond云原生部署開源社區(qū)Discourse的配置過程

    Rainbond云原生部署開源社區(qū)Discourse的配置過程

    這篇文章主要為大家介紹了Rainbond云原生部署開源社區(qū)Discourse配置過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • Rancher通過界面管理K8s平臺的圖文步驟詳解

    Rancher通過界面管理K8s平臺的圖文步驟詳解

    這篇文章主要為大家介紹了Rancher通過界面管理K8s平臺通過詳細的圖文進行步驟講解,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • kubernetes需要默認的serviceaccount的原因解析

    kubernetes需要默認的serviceaccount的原因解析

    這篇文章主要介紹了kubernetes為何需要默認的serviceaccount,ServiceAccount 是 Kubernetes 中的一種重要概念,它的實際使用場景包括很多,本文給大家講解的非常詳細,需要的朋友可以參考下
    2023-04-04
  • kubernetes-1.25.6二進制部署方式

    kubernetes-1.25.6二進制部署方式

    這篇文章主要介紹了kubernetes-1.25.6二進制部署方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • CentOS?8.2?k8s?基礎環(huán)境配置

    CentOS?8.2?k8s?基礎環(huán)境配置

    這篇文章主要介紹了CentOS?8.2?k8s?基礎環(huán)境配置,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • 如何給k8s集群里的資源打標簽

    如何給k8s集群里的資源打標簽

    k8s集群,節(jié)點如果有多個角色,需要標記出來,可以給對應的節(jié)點打上標簽,方便后續(xù)了解節(jié)點的功能,這篇文章主要介紹了如何給k8s集群里的資源打標簽,需要的朋友可以參考下
    2023-02-02
  • 關于k8s中subpath的使用詳解

    關于k8s中subpath的使用詳解

    這篇文章主要介紹了k8s中subpath的使用,文章介紹分為兩種情況給大家詳細講解,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • K8s解決主機重啟后kubelet無法自動啟動問題(推薦)

    K8s解決主機重啟后kubelet無法自動啟動問題(推薦)

    在安裝配置好Kubernetes后,正常情況下服務器關機重啟,kubelet也會自動啟動的,如何解決這個問題呢,下面小編給大家?guī)砹薑8s解決主機重啟后kubelet無法自動啟動問題,感興趣的朋友一起看看吧
    2022-08-08
  • 不同k8s集群間服務如何相互訪問實現(xiàn)詳解

    不同k8s集群間服務如何相互訪問實現(xiàn)詳解

    這篇文章主要為大家介紹了不同k8s集群間服務如何相互訪問實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04

最新評論