nginx的header过大问题

线上某业务发现了一些400和413请求:request header or cookie too large

之前在cookie转存业务的时候,也是因为cookie头信息过大,导致访问出现400错误,调整了以下参数当时错误消失了

proxy_buffer_size 64k;
proxy_buffers 8 64k;
proxy_busy_buffers_size 128k;

但是这三个参数只是在server段,针对upstream转发生效。

而这次域名的错误,还未匹配到域名,直接把400错误记录到了default error.log中。尝试添加下面2个参数:

client_header_buffer_size 64k;
large_client_header_buffers 8 64k;

在vhosts的主机头(server段)中,但是没有生效。最大header经过测试依旧是8192字节。
之后把这两个参数添加到nginx主配置的http段中,才正常生效。不再出现header too large的错误。
官方文档写的是这两个参数http和server段可用,可能是个bug。

官方文档参考:
http://wiki.nginx.org/HttpCoreModule#client_header_buffer_size
http://wiki.nginx.org/HttpCoreModule#large_client_header_buffers