Nginx自定义请求头丢失

一、故障现象

自定义请求头"request_id"丢失

二、问题排查

配置调试环境,接口打印header,依次调用链路各层,发现请求nginx代理时对应Header丢失

示例

curl -H "request_id: 11111111" -H "host: api.example.com" http://127.0.0.1/headers
X-Real-Ip: 10.0.0.2
X-Forwarded-For: 192.168.0.3, 10.0.0.2
X-Forwarded-Host: api.example.com
X-Forwarded-Port: 9080
User-Agent: curl/7.61.1
X-Forwarded-Proto: http
Accept: */*

nignx配置

proxy_set_header request_id $http_request_id;

四、排查

负载均衡器会丢弃它收到的任何空的头信息。带有下划线的头信息也会被丢弃。如果你的上游Web服务器依赖于带有下划线的头信息,那么它们就无法获取到这些头信息,除非你使用underscores_in_headers指令配置你的负载均衡器以使这类头信息可用。

原文

在这里插入图片描述

链接

https://www.nginx-cn.net/blog/scaling-web-applications-nginx-part-load-balancing/

五、验证

http {
    underscores_in_headers on;
...
}

测试

curl -H "request_id: 11111111" -H "host: api.example.com" http://127.0.0.1/headers
X-Real-Ip: 10.0.0.2
X-Forwarded-For: 192.168.0.3, 10.0.0.2
X-Forwarded-Host: api.example.com
X-Forwarded-Port: 9080
User-Agent: curl/7.61.1
X-Forwarded-Proto: http
Accept: */*
Request_id: 11111111

结论

问题解决

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值