nginx 414 Request-URI Too Large

摘要:
大客户头缓冲器4128k;当HTTP URI太长或请求标头太大时,将报告414RequestURItoolarge或400badrequest错误。这可能是由场景1造成的。写入cookie的值太大,因为标头中其他参数的大小通常是固定的,只有cookie可以写入更大的数据场景2。请求参数太长,例如发布文章正文,使用urlencode,然后使用get方法将其发送到后台。获取http://www.264.cn/HTTP/1.1Host:www.264.cnConnection:keep-aliveCache控件:max age=0接受:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8User-Agent:Mozilla/5.0AppleWebKit/537.31Accept-Encoding:gzip,deflate,sdchAccept-Language:zh-CN,zh;q=0.8Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3Cookie:bdshare_firstime=1363517175366;如果修改自:Mon,2013年5月13日13:40:02GMT当请求头太大时,它超过了large_client_header_缓冲时,nginx可能会返回“RequestURItoolarge”或“Bad request”错误。例如,HTTP请求头由多行组成,其中“GEThttp://www.264.cn/HTTP/1.1指示请求行当请求行的长度大于large_client_header_buffer的缓冲区时,nginx将返回一个“RequestURItoolarge”错误,对应于上面的场景2。

症状

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.264.cn/ HTTP/1.1
Host: www.264.cn
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: 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)错误。

如上例HTTP请求头由多行构成,其中"GET http://www.264.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 414 Request-URI Too Large》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OFFICE 文档转换为html在线预览PHP-深入学习Smarty下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Nginx实践:(2) Nginx语法之localtion

1. 概念 location是根据uri进行不同的定位。在虚拟主机的配置中,是必不可少的。location可以将网站的不同部分,定位到不同的处理方式上。 location语法格式如下: location [=|~|~*|^~] patt{ } 其中: (1) 当[]中的内容均不填写时,表示一般匹配 (2) "="表示精准匹配 (3) "~"表示正则匹配 ...

Nginx内存与磁盘资源的分配

本文介绍Nginx静态web服务器配置中的内存与磁盘资源的分配,即处理请求时,内存和磁盘资源的分配配置项。 1.HTTP包体保存在磁盘中 语法:client_body_in_file_only on|clean|off; 默认:client_body_in_file_only off; 配置块:server、http、location 当配置为off时,H...

制作openresty的docker镜像 + nginx笔记 调试rewrite和location Nginx 学习笔记

1.Dockerfile FROM centos:7.6.1810 MAINTAINER openresty1.15.8.2 <dingxiaowei@do1.com> RUN yum install -y yum-utils && yum-config-manager --add-repo https://open...

react中实现滚动到指定位置固定显示导航栏,反之浸入背景

  需求描述   当导航栏置顶时,导航栏沉浸在背景图里;当鼠标滑动滚轮到一定位置时,显示导航栏   用原生JS实现   给window添加scroll滚动事件并执行对应方法,这里执行方法为handleScroll      react中实现   在react中如果要使用上面的代码,需要使用生命周期函数componentDidMount添加scroll滚动事...

【WPF】1、 基本控件的简介

WPF一直都是断断续续的使用。偶尔用到一下。但是每次间隔比较长,需要重新学习,就写了这篇日志。以后有问题,看这个就可以了解各大概,然后针对细节再另外想办法。 微软的东西真心好,如果什么都不懂,可以直接用控件快速上手,如果有高级要求,可以调底层的库,自己实现。 默认可以看到的控件 1、Border 放到其他控件内部,给其他控件画边框,其他容器必须支持双标签。...

[Swift]在Swift项目中创建桥接头文件,Swift文件和Objective-C文件相互调用

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://w...