Istio使用Envoy轉發Http請求錯誤碼426 Upgrade Required
阿新 • 來源:網路 • 發佈:2022-12-14
背景
此前將公司的幾個服務進行了服務網格的技術改造,其中一個應用是為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;
}
}
