Istio使用Envoy轉發Http請求錯誤碼426 Upgrade Required


背景

此前將公司的幾個服務進行了服務網格的技術改造,其中一個應用是為H5提供Http接口,在改造之前,H5通過域名調用后台接口,請求經過nginx進行轉發,轉發的目標是阿里雲SLB(阿里雲負載均衡產品)的ip端口,服務網格改造后,Nginx的轉發目標變成了k8s的ingress網關的ip端口,接着問題就出現了,接口調不通,Http返回426 Upgrade Required。

解決辦法

426 Upgrade Required解釋

該錯誤碼意思是客戶端需要升級協議版本

導致原因和解決辦法

原因

 Istio使用Envoy作為數據面轉發HTTP請求,而Envoy默認要求使用HTTP/1.1或HTTP/2,當客戶端使用HTTP/1.0時就會返回426 Upgrade Required,如果用nginx進行proxy_pass反向代理,默認會用 HTTP/1.0

解決:nginx顯示指定 proxy_http_version為1.1

 修改nginx的配置文件nginx.conf,顯示指定代理proxy_http_version為1.1,代碼如下

server {
    ...

    location /http/path/ {
        proxy_http_version 1.1;
        proxy_pass http://ip:port;
    }
}

參考:https://blog.csdn.net/qq_31279701/article/details/120535554


免責聲明!

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



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