背景:已知道 upstream 校驗Host
現(xiàn)象: client-->apisix:http://xxx:9080-->upstream https://xxx:443 報400錯誤,確定400錯誤是upstream返回的
原因:apisix往upstream上游轉發(fā)的時候會攜帶以下頭部,例如:"X-Forwarded-Host": "x.zone" ,如果不在apisix route配置中手動指定:X-Forwarded-Host值,apisix會把自己的ip加到X-Forwarded-Host,源站校驗X-Forwarded-Host!=x.zone不通過就返回400

image.png
經(jīng)驗:apisix會自己生成很多頭部信息攜帶去和源站建立連接,在使用apisix代理時如果遇到錯誤,有可能是apisix帶的頭部和預期不符,需要抓包比對請求頭部的差異,如果源站無法抓包,在源站和apisix中間加個nginx代理,在nginx代理上抓包(模擬源站收到apisix請求,看nginx日志不完全準確)
"plugins": {
"proxy-rewrite": {
"headers": {
"set": {
"Host": "0.zone",
"X-Forwarded-Host": "0.zone"
}
},
}