underscores_in_headers参数

介绍

nginx代理默认会把header中参数的 "" 下划线去掉,所以后台服务器后就获取不到带""线的参数名。 underscores_in_headers on; #该属性默认为off,表示如果header name中包含下划线,则忽略掉。

场景再现

两层代理产生的异常后,发现根本就不是跨域问题,最后全面盘查才发现ws的请求虽然都是200,不过响应的数据都是空的,

原因是ws请求时没有携带参数,而真相就在这里,客户请求的参数包含了"_",nginx默认忽略。

把之前的猜测推倒重来,在代理的两个server块加上underscores_in_headers on,问题至此解决。