本文共 455 字,大约阅读时间需要 1 分钟。
遇到一个问题,Nginx完全做反向代理的时候,当有请求来的时候,后端服务器,有时可以很快返回结果,但有时根本没有访问到后端服务器。这种情况让人有些困惑,不知道是哪里出了问题。
查了下发现,Nginx需要手动进行配置,让Nginx支持下划线。原因就能看到了,默认配置是关闭的,当一个请求有带有下划线的时候,Nginx会直接过滤掉这样的请求。因此,在http配置区域里,把这个功能开启,让Nginx支持带有下划线的请求。
源码中可以看到,在ngx_http_parse_header_line()函数中,如果字符是下划线,就会触发问题所在的部分。红色部门就是问题所在,原来是对header name的字符做了限制,默认underscores_in_headers为off,表示如果header name中包含下划线,则忽略掉。
处理办法有两种:
1:配置中http部分增加underscores_in_headers on;
2:用减号-替代下划线符号_,避免这种变态问题。Nginx默认忽略掉下划线可能有些原因。
转载地址:http://blcfk.baihongyu.com/