首页 > nginx > nginx 414 Request-URI Too Large

nginx 414 Request-URI Too Large

2013年5月21日 发表评论 阅读评论

#客户端请求头缓冲区大小,如果请求头总长度大于小于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方式传到后台。

当请求头过大时,超过large_client_header_buffer时,
nginx可能返回"Request URI too large" (414)或者"Bad-request"(400)错误,

如上例HTTP请求头由多行构成,
其中"GET http://www.redis.com.cn/ HTTP/1.1"表示Request line

当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;

分类: nginx 标签: , , ,
  1. EFE2
    2019年8月23日14:02 | #1

    闫城瑞 :
    博主写的很专业

  2. 闫城瑞
    2016年5月29日19:33 | #2

    博主写的很专业

  3. 逍遥生
    2016年1月17日13:27 | #4

    博主写的很专业

  4. 2013年10月31日22:59 | #5

    博主写的很专业

  1. 2013年10月9日22:38 | #1