underscores_in_headers参数
介绍
nginx代理默认会把header中参数的 "" 下划线去掉,所以后台服务器后就获取不到带""线的参数名。 underscores_in_headers on; #该属性默认为off,表示如果header name中包含下划线,则忽略掉。
场景再现
两层代理产生的异常后,发现根本就不是跨域问题,最后全面盘查才发现ws的请求虽然都是200,不过响应的数据都是空的,
原因是ws请求时没有携带参数,而真相就在这里,客户请求的参数包含了"_",nginx默认忽略。
把之前的猜测推倒重来,在代理的两个server块加上underscores_in_headers on,问题至此解决。