nginx返回的错误
配置多个vhost,nginx在处理header时实际分配的buffer大小,是解析conf后,default_server中的最终值。
若http中有配置,server中无配置,以http中配置为准;若http中无配置,server中有配置,以server中配置为准;若http中无配置,server中无配置,以默认配置为准。
三者有区别
设置到http{}内,控制全局nginx所有请求报文大小
设置到server{}内,控制该server的所有请求报文大小
设置到location{}内,控制满足该路由规则的请求报文大小
1、client_body_buffer_size
#缓冲区代理缓冲用户端请求的最大字节数
client_body_buffer_size 128k;
该参数对nginx服务器接受客户端请求的头信息时所分配的最大缓冲区的大小做了限制,也就是nginx服务器一次接受一个客户端请求可就收的最大都信息大小。
这个头不仅包含 request-line,还包括通用信息头、请求头域、响应头域的长度总和。这也相当程度的限制了url的长度。nginx服务器默认的限制是4K或者8K。
2、client_max_body_size
该参数对发自客户端的http请求的消息实体大小进行了限制,此参数默认值为1MB,如果超过该值,则会服务器会返回错误状态码 413(Request Entity Too Large)。
#Default,Context:http, server
client_header_buffer_size 1k;
设置用于读取客户端请求头的缓冲区大小。对于大多数请求,1K字节的缓冲区就足够了。但是,如果请求包含长cookie或来自WAP客户端,则它可能无法容纳1K。如果请求行或请求头字段不适合此缓冲区,则会分配由large_client_header_buffers指令配置的更大的缓冲区。
#Default:
large_client_header_buffers 4 8k;
设置用于读取大型客户端请求头的缓冲区的最大数量和大小。请求行不能超过一个缓冲区的大小,否则向客户端返回414(Request-URI Too Large)错误。如果请求头字段HTTP头/Cookie过大也不能超过一个缓冲区的大小,否则向客户端返回400(Bad Request)错误。缓冲区仅按需分配。默认情况下,缓冲区大小等于8K字节。如果在请求处理结束后连接转换为保持活动状态,则释放这些缓冲区。