apisix 400问题修复

背景:已知道 upstream 校验Host
现象: client-->apisix:http://xxx:9080-->upstream https://xxx:443 报400错误,确定400错误是upstream返回的

原因:apisix往upstream上游转发的时候会携带以下头部,例如:"X-Forwarded-Host": "x.zone" ,如果不在apisix route配置中手动指定:X-Forwarded-Host值,apisix会把自己的ip加到X-Forwarded-Host,源站校验X-Forwarded-Host!=x.zone不通过就返回400

image.png

经验:apisix会自己生成很多头部信息携带去和源站建立连接,在使用apisix代理时如果遇到错误,有可能是apisix带的头部和预期不符,需要抓包比对请求头部的差异,如果源站无法抓包,在源站和apisix中间加个nginx代理,在nginx代理上抓包(模拟源站收到apisix请求,看nginx日志不完全准确)

  "plugins": {
    "proxy-rewrite": {
      "headers": {
        "set": {
          "Host": "0.zone",
          "X-Forwarded-Host": "0.zone"
        }
      },
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容