学习是一个逐步发现自己无知的过程!

Nginx缓冲溢出

client_header_buffer_size

Syntax: client_header_buffer_size size;
Default: client_header_buffer_size 1k;
Context: http, server

假设client_header_buffer_size的配置为1k,如果(请求行+请求头)的大小如果没超过1k,放行请求。如果(请求行+请求头)的大小如果超过1k,则以large_client_header_buffers配置为准

large_client_header_buffers

Syntax: large_client_header_buffers number size;
Default: large_client_header_buffers 4 8k;
Context: http, server

假设large_client_header_buffers的配置为4 8k,则对请求有如下要求

  1. 请求行(request line)的大小不能超过8k,否则返回414错误
  2. 请求头(request header)中的每一个头部字段的大小不能超过8k,否则返回400错误(实际是494错误,但nginx统一返回400了)
    curl -H "header1=aaa" -H "header2=bbb" -v http://127.0.0.1/,这里的header1=xxxheader2=xxx就是请求头中的头部字段
  3. (请求行+请求头)的大小不能超过32k(4 * 8k)

client_max_body_size

Syntax: client_max_body_size size;
Default: client_max_body_size 1m;
Context: http, server, location

client_max_body_size 默认 1M,表示 客户端请求服务器最大允许大小,在“Content-Length”请求头中指定。如果请求的正文数据大于client_max_body_size,HTTP协议会报错 413 Request Entity Too Large。

client_body_buffer_size

Syntax: client_body_buffer_size size;
Default: client_body_buffer_size 8k|16k;
Context: http, server, location

Nginx分配给请求数据的Buffer大小,如果请求的数据小于client_body_buffer_size直接将数据先在内存中存储。如果请求的值大于client_body_buffer_size小于client_max_body_size,默认该路径值是/tmp/ 所以配置的client_body_temp地址,一定让执行的Nginx的用户组有读写权限。

赞(0)
未经允许不得转载:劉大帥 » Nginx缓冲溢出

你的评论可能会一针见血! 抢沙发

登录

找回密码

注册