增加Apache2和Nginx的header长度限制

标签: 服务器类 apache nginx | 发表时间:2012-09-05 23:08 | 作者:admin
出处:http://blog.haohtml.com

nginx默认的header长度上限是4k,如果超过了这个值
nginx会直接返回400错误

[error] 16613#0: *105 upstream sent too big header while reading response header from upstream

可以通过以下2个参数来调整header上限

client_header_buffer_size 16k;
large_client_header_buffers 4 16k;

看起来是,nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取

client_header_buffer_size
syntax: client_header_buffer_size size
default: 1k
context: http, server
Directive sets the headerbuffer size for the request header from client.
For the overwhelming majority of requests it is completely sufficient a buffer size of 1K.
However if a big cookie is in the request-header or the request has come from a wap-client the header can not be placed in 1K, therefore, the request-header or a line of request-header is not located completely in this buffer nginx allocate a bigger buffer, the size of the bigger buffer can be set with the instruction large_client_header_buffers.

 

large_client_header_buffers
syntax: large_client_header_buffers number size
default: large_client_header_buffers 4 4k/8k
context: http, server
Directive assigns the maximum number and size of buffers for large headers to read from client request.
The request line can not be bigger than the size of one buffer, if the client send a bigger header nginx returns error “Request URI too large” (414).
The longest header line of request also must be not more than the size of one buffer, otherwise the client get the error “Bad request” (400).
Buffers are separated only as needed.
By default the size of one buffer is equal to the size of page, depending on platform this either 4K or 8K, if at the end of working request connection converts to state keep-alive, then these buffers are freed.
---------------------------------------------------------------------------------------

对于apache2来说,它默认值是8k
可以调整以下2个参数

LimitRequestLine 16k
LimitRequestFieldSize 16k
LimitRequestLine 指令设置的是每一个header长度的上线

LimitRequestLine 指令
说明 限制接受客户端发送的HTTP请求行的字节数
语法 LimitRequestLine bytes
默认值 LimitRequestLine 8190
作用域 server config
状态 核心(C)
模块 core
bytes将设置HTTP请求行的字节数限制。
LimitRequestLine指令允许服务器管理员增加或减少客户端HTTP请求行允许大小的限制。因为请求行包括HTTP方法、URI、协议版本,所以LimitRequestLine指令会限制请求URI的长度。服务器会需要这个值足够大以装载它所有的资源名,包括可能在GET请求中所传递的查询部分的所有信息。
这个指令给了服务器管理员更大的可控性以控制客户端不正常的请求行为。这有助于避免某些形式的拒绝服务攻击。

LimitRequestFieldSize指令设置的是所有header总长度的上限值

LimitRequestFieldSize 指令
说明 限制客户端发送的请求头的字节数
语法 LimitRequestFieldsize bytes
默认值 LimitRequestFieldsize 8190
作用域 server config
状态 核心(C)
模块 core
bytes指定了HTTP请求头允许的字节大小。
LimitRequestFieldSize指令允许服务器管理员增加或减少HTTP请求头域大小的限制。一般来说,服务器需要此值足够大,以适应普通客户端的任何请求的头域大小。一个普通头域的大小对于不同的客户端来说是有很大差别的,一般与用户配置他们的浏览器以支持更多的内容协议密切相关。SPNEGO的认证头最大可能达到12392字节。
这个指令给了服务器管理员更大的可控性以控制客户端不正常的请求行为。这有助于避免某些形式的拒绝服务攻击。

相关 [apache2 nginx header] 推荐:

增加Apache2和Nginx的header长度限制

- - haohtml's blog
nginx默认的header长度上限是4k,如果超过了这个值. nginx会直接返回400错误. 可以通过以下2个参数来调整header上限. 看起来是,nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取.

Apache2 / Nginx 啟用壓縮(gzip) 於 IE6 的問題說明

- - Tsung's Blog
網站只要能啟用 gzip 壓縮, 都能節省非常多的流量, 下述幾種與對應壓縮方式名稱對應:. apache2.x: deflate (啟用方式: a2enmod deflate). 只是壓縮啟用後, 在 IE6 會有一些問題, 有時候會出現空白頁 / JS 沒載入完. IE6 (含 IE6 以前的版本)不支援 "Transfer-Encoding: chunked", 所以會有問題..

HTTP Header 详解

- - 博客园_Ruby's Louvre
HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议. HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应. 就整个网络资源传输而言,包括message-header和message-body两部分. 首先传递message- header,即 http header消息.

easy Html5 - Jquery Mobile之ToolBars(Header and Footer)

- - 博客园_首页
jquery 在web js框架上的风暴还在继续却也随着移动终端走向了mobile;那么jquery mobile到底包括些什么呢. 页面Header是一个data-role为header的div,当然我们可以在这个div里定义其他任何内容,比如常用的后退按钮等;. 一般在header里添加的button不要太多,添加在header里的按钮带有自动定位功能;.

html的header结构和实例

- - 博客园_iTech's Blog
来自: http://www.cnblogs.com/FlyCat/archive/2012/06/27/2566325.html. HTML header结构.              base标签为页面上的所有链接规定默认地址或默认目标.              通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来构造新的相对 URL .

Apache 針對 Header 的安全性設定

- - SSORC.tw
Clickjacking 就是讓使用者在瀏覽網頁的點擊動作進行綁架,讓點擊動作產生非使用者所預期的行為,防禦方式就是設定 X-Frame-Options ,讓表頭回應時不受嵌入式網站影響,比方說自已的網站有放廣告的話,這麼設定就可以保護瀏覽 ssorc.tw 的人. OWASP 列出幾個 Header 需要安全性設定及描述,而 這裡 有設定參考.

nginx配置ssl

- - 邢红瑞的blog
先生成网关证书 ,仿照CA模式.

Nginx安装

- - 企业架构 - ITeye博客
nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息. 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好. ububtu平台编译环境可以使用以下指令. centos平台编译环境使用如下指令. 一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩.

Nginx GZip 压缩

- - 开心平淡对待每一天。热爱生活
  Nginx GZip 模块文档详见: http://wiki.nginx.org/HttpGzipModule 常用配置片段如下:. # 压缩比例,比例越大,压缩时间越长. 默认是1 gzip_types. text/css text/javascript; # 哪些文件可以被压缩 gzip_disable.

Nginx 限流

- - 鸟窝
电商平台营销时候,经常会碰到的大流量问题,除了做流量分流处理,可能还要做用户黑白名单、信誉分析,进而根据用户ip信誉权重做相应的流量拦截、限制流量. Nginx自身有的请求限制模块 ngx_http_limit_req_module、流量限制模块 ngx_stream_limit_conn_module基于令牌桶算法,可以方便的控制令牌速率,自定义调节限流,实现基本的限流控制.