nginx的代理head参数丢失问题

业务场景

http请求中除了一些公共header,我们还可以定义一些其他header:如token、移动端的唯一设备id、一些自己业务的基础属性如用户id、城市id等等。

  • 基于此可以根据设备、用户、点击链路做出用户行为分析,优化当前的产品,甚至是用在广告的个性化推荐上;
  • 服务端可以基于这些基本信息对每个行为做日志记录;

问题及定位

客户端通过head传递有下划线的参数,使用nginx做代理转发,nginx服务器默认会对http请求中带下划线的header做过滤丢失不会透传。

因为CGI(公共网关接口Common Gateway Interface,CGI是Web
服务器运行时外部程序的规范)的历史遗留问题如下,大概意思就是 下划线和中划线都为会被映射为 CGI
系统变量中名中的下划线,这样容易引起混淆。

解决方法

1.个人比较推荐这种方式。常见的header变量都是遵循这种方式,例如:Content-Type,Content-Length,Accept-Ranges等。

2.在nginx里的nginx.conf配置文件中的http部分中添加如下配置:

http
	{
		xxx;
        underscores_in_headers on;
    }

然后

nginx -s reload
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大佬腿好粗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值