问题描述

使用nginx代理转发A项目的时候,调用nginx,发现A项目报错,header中参数丢失(过滤器拦截,有提示缺失的参数)

原因猜想

因为其他项目也是走的nginx代理转发,header中的参数并没有丢失的情况,然后对比下A项目和其他正常的项目的参数,发现A项目丢失的参数都是带有_下划线的参数名,如t_test。猜测是nginx把header中带下划线的参数名过滤了

问题解决

最终找到nginx的一个配置:underscores_in_headers,underscores就是下划线的意思,这个配置的意思就是说是否支持header中带下划线的参数名,默认配置是off。将其改为on即可,热部署配置文件后重新访问nginx,正常访问到A项目。配置位置在http里面,如下所示:
nginx代理转发导致header带下划线参数名丢失

萌新发言,不喜勿喷,欢迎大佬们指出不当之处

相关文章: