易妖游戏网
您的当前位置:首页nginx414Request-URITooLarge

nginx414Request-URITooLarge

来源:易妖游戏网
nginx414Request-URITooLarge

症状

nginx 414 Request-URI Too Large

#客户端请求头缓冲区⼤⼩,如果请求头总长度⼤于⼩于128k,则使⽤此缓冲区,#请求头总长度⼤于128k时使⽤large_client_header_buffers设置的缓存区client_header_buffer_size 128k;

#large_client_header_buffers 指令参数4为个数,128k为⼤⼩,默认是8k。申请4个128k。large_client_header_buffers 4 128k;

当http 的URI太长或者request header过⼤时会报414 Request URI too large或400 bad request错误。

可能原因

场景1.cookie中写⼊的值太⼤造成的,因为header中的其他参数的size⼀般⽐较固定,只有cookie可能被写⼊较⼤的数据场景2.请求参数太长,⽐如发布⼀个⽂章正⽂,⽤urlencode后,使⽤get⽅式传到后台。

GET http://www.2.cn/ HTTP/1.1Host: www.2.cn

Connection: keep-aliveCache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 Accept-Encoding: gzip,deflate,sdchAccept-Language: zh-CN,zh;q=0.8

Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3Cookie: bdshare_firstime=1363517175366;

If-Modified-Since: Mon, 13 May 2013 13:40:02 GMT

当请求头过⼤时,超过large_client_header_buffer时,nginx可能返回\"Request URI too large\" (414)或者\"Bad-request\"(400)错误。当Request line的长度⼤于large_client_header_buffer的⼀个buffer(128k)时,nginx会返回\"Request URI too large\" (414)错误,对应上⾯的场景2。

请求投中最长的⼀⾏也要⼩于large_client_header_buffer,当不是Request line的最长⾏⼤于⼀个buffer(128k)时,会返回\"Bad-request\"(400)错误,对应上⾯的场景1。

解决办法

这时可以调⼤上述两个值:

client_header_buffer_size 512k;large_client_header_buffers 4 512k;

因篇幅问题不能全部显示,请点此查看更多更全内容