问题描述
使用nginx代理转发A项目的时候,调用nginx,发现A项目报错,header中参数丢失(过滤器拦截,有提示缺失的参数)
原因猜想
因为其他项目也是走的nginx代理转发,header中的参数并没有丢失的情况,然后对比下A项目和其他正常的项目的参数,发现A项目丢失的参数都是带有_下划线的参数名,如t_test。猜测是nginx把header中带下划线的参数名过滤了
问题解决
最终找到nginx的一个配置:underscores_in_headers,underscores就是下划线的意思,这个配置的意思就是说是否支持header中带下划线的参数名,默认配置是off。将其改为on即可,热部署配置文件后重新访问nginx,正常访问到A项目。配置位置在http里面,如下所示: