语法: client_body_in_file_only on|clean|off;
默认: client_body_in_file_only off;
配置块: http、server、location 当值为非off时,用户请求中的HTTP包体一律存储到磁盘文件中,即使只有0字节也会存 储为文件。当请求结束时,如果配置为on,则这个文件不会被删除(该配置一般用于调试、 定位问题),但如果配置为clean,则会删除该文件 2.HTTP包体尽量写入到一个内存buffer中 语法: client_body_in_single_buffer on|off;
默认: client_body_in_single_buffer off;
配置块: http、server、location 用户请求中的HTTP包体一律存储到内存buffer中。当然,如果HTTP包体的大小超过了 下面client_body_buffer_size设置的值,包体还是会写入到磁盘文件 (3)存储HTTP头部的内存buffer大小 语法: client_header_buffer_size size;
默认: client_header_buffer_size 1k;
配置块: http、server 上面配置项定义了正常情况下Nginx接收用户请求中HTTP header部分(包括HTTP行和 HTTP头部)时分配的内存buffer大小。有时,请求中的HTTP header部分可能会超过这个大 小,这时large_client_header_buffers定义的buffer将会生效 (4)存储超大HTTP头部的内存buffer大小 语法: large_client_header_buffers number size;
默认: large_client_header_buffers 48k;
配置块: http、server large_client_header_buffers定义了Nginx接收一个超大HTTP头部请求的buffer个数和每个 buffer的大小。如果HTTP请求行(如GET/index HTTP/1.1)的大小超过上面的单个buffer,则 返回"Request URI too large"(414)。请求中一般会有许多header,每一个header的大小也不能超 过单个buffer的大小,否则会返回"Bad request"(400)。当然,请求行和请求头部的总和也不可 以超过buffer个数*buffer大小。 (5)存储HTTP包体的内存buffer大小 语法: client_body_buffer_size size;
默认: client_body_buffer_size 8k/16k;
配置块: http、server、location 面配置项定义了Nginx接收HTTP包体的内存缓冲区大小。也就是说,HTTP包体会先 接收到指定的这块缓存中,之后才决定是否写入磁盘。 note: 如果用户请求中含有HTTP头部Content-Length,并且其标识的长度小于定义 的buffer大小,那么Nginx会自动降低本次请求所使用的内存buffer,以降低内存消耗。 (6)HTTP包体的临时存放目录 语法: client_body_temp_path dir-path[level1[level2[level3]]]
默认: client_body_temp_path client_body_temp;
配置块: http、server、location 上面配置项定义HTTP包体存放的临时目录。在接收HTTP包体时,如果包体的大小大于 client_body_buffer_size,则会以一个递增的整数命名并存放到client_body_temp_path指定的目 录中。后面跟着的level1、level2、level3,是为了防止一个目录下的文件数量太多,从而导 致性能下降,因此使用了level参数,这样可以按照临时文件名最多再加三层目录。例如 client_body_temp_path optnginx/client_temp 1 2;如果新上传的HTTP包体使用00000123456作为临时文件名,就会被存放在这个目录中
optnginx/client_temp/6/45/00000123456 (7)connection_pool_size Nginx对于每个建立成功的TCP连接会预先分配一个内存池 语法: connection_pool_size size;
默认: connection_pool_size 256; (8)request_pool_size 语法: request_pool_size size;
默认: request_pool_size 4k;
配置块: http、server Nginx开始处理HTTP请求时,将会为每个请求都分配一个内存池,size配置项将指定这
个内存池的初始大小语法: reset_timeout_connection on|off;
默认: reset_timeout_connection off;
配置块: http、server、location 语法: client_header_timeout time(默认单位:秒);
默认: client_header_timeout 60;
配置块: http、server、location 如果在一个时间间 隔(超时时间)内没有读取到客户端发来的字节,则认为超时,并向客户端返回 408("Request timed out")响应。 语法: client_body_timeout time(默认单位:秒);
默认: client_body_timeout 60;
配置块: http、server、location 语法: send_timeout time;
默认: send_timeout 60;
配置块: http、server、location 这个超时时间是发送响应的超时时间,即Nginx服务器向客户端发送了数据包,但客户 端一直没有去接收这个数据包。如果某个连接超过send_timeout定义的超时时间,那么Nginx 将会关闭这个连接 语法: reset_timeout_connection on|off;
默认: reset_timeout_connection off;
配置块: http、server、location 连接超时后将通过向客户端发送RST包来直接重置连接。这个选项打开后,Nginx会在某 个连接超时后,不是使用正常情形下的四次握手关闭TCP连接,而是直接向用户发送RST重 置包,不再等待用户的应答,直接释放Nginx服务器上关于这个套接字使用的所有缓存(如 TCP滑动窗口)。相比正常的关闭方式,它使得服务器避免产生许多处于FIN_WAIT_1、 FIN_WAIT_2、TIME_WAIT状态的TCP连接 语法: lingering_close off|on|always;
默认: lingering_close on;
配置块: http、server、location 该配置控制Nginx关闭用户连接的方式。 always表示关闭用户连接前必须无条件地处理连 接上所有用户发送的数据 off表示关闭连接时完全不管连接上是否已经有准备就绪的来自用 户的数据。 on是中间值,一般情况下在关闭连接前都会处理连接上的用户发送的数据,除了 有些情况下在业务上认定这之后的数据是不必要的。 语法: lingering_time time;
默认: lingering_time 30s;
配置块: http、server、location Lingering_close启用后,这个配置项对于上传大文件很有用。上文讲过,当用户请求的 Content-Length大于max_client_body_size配置时,Nginx服务会立刻向用户发送413(Request entity too large)响应。但是,很多客户端可能不管413返回值,仍然持续不断地上传HTTP body,这时,经过了lingering_time设置的时间后,Nginx将不管用户是否仍在上传,都会把连 接关闭掉 语法: lingering_timeout time;
默认: lingering_timeout 5s;
配置块: http、server、location lingering_close生效后,在关闭连接前,会检测是否有用户发送的数据到达服务器,如果 超过lingering_timeout时间后还没有数据可读,就直接关闭连接;否则,必须在读取完连接缓 冲区上的数据并丢弃掉后才会关闭连接 语法: keepalive_disable[msie6|safari|none]...
默认: keepalive_disable msie6 safari
配置块: http、server、location HTTP请求中的keepalive功能是为了让多个请求复用一个HTTP长连接,这个功能对服务 器的性能提高是很有帮助的。但有些浏览器,如IE 6和Safari,它们对于使用keepalive功能的 POST请求处理有功能性问题。因此,针对IE 6及其早期版本、Safari浏览器默认是禁用keepalive功能的 语法: keepalive_timeout time(默认单位:秒);
默认: keepalive_timeout 75;
配置块: http、server、location 一个keepalive连接在闲置超过一定时间后(默认的是75秒),服务器和浏览器都会去关 闭这个连接。当然,keepalive_timeout配置项是用来约束Nginx服务器的,Nginx也会按照规范 把这个时间传给浏览器,但每个浏览器对待keepalive的策略有可能是不同的。 语法: keepalive_requests n;
默认: keepalive_requests 100;
配置块: http、server、location MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式
语法: type{...};
配置块: http、server、location 定义MIME type到文件扩展名的映射。多个扩展名可以映射到同一个MIME type types {
text/html html;
text/html conf;
image/gif gif;
image/jpeg jpg;
} 语法: default_type MIME-type;
默认: default_type text/plain;
配置块: http、server、location 语法: types_hash_bucket_size size;
默认: types_hash_bucket_size 32|64|128;
配置块: http、server、location 为了快速寻找到相应MIME type,Nginx使用散列表来存储MIME type与文件扩展名。 types_hash_bucket_size设置了每个散列桶占用的内存大小。 按HTTP方法名限制用户请求
语法: limit_except method...{...}
配置块: location Nginx通过limit_except后面指定的方法名来限制用户请求。方法名可取值包括:GET、 HEAD、POST、PUT、DELETE、MKCOL、COPY、MOVE、OPTIONS、PROPFIND、 PROPPATCH、LOCK、UNLOCK或者PATCH。例如: limit_except GET {
allow 192.168.1.0/32;
deny all;
} 注意,允许GET方法就意味着也允许HEAD方法。因此,上面这段代码表示的是禁止 GET方法和HEAD方法,但其他HTTP方法是允许的。 语法: client_max_body_size size;
默认: client_max_body_size 1m;
配置块: http、server、location 浏览器在发送含有较大HTTP包体的请求时,其头部会有一个Content-Length字段, client_max_body_size是用来限制Content-Length所示值的大小的。因此,这个限制包体的配置 非常有用处,因为不用等Nginx接收完所有的HTTP包体——这有可能消耗很长时间——就可 以告诉用户请求过大不被接受。例如,用户试图上传一个10GB的文件,Nginx在收完包头 后,发现Content-Length超过client_max_body_size定义的值,就直接发送413("Request EntityToo Large")响应给客户端。 语法: limit_rate speed;
默认: limit_rate 0;
配置块: http、server、location、if 配置是对客户端请求限制每秒传输的字节数。s 针对不同的客户端,可以用$limit_rate参数执行不同的限速策略。例如: server {
if ($slow) {
set $limit_rate 4k;
}
} 语法: limit_rate_after time;
默认: limit_rate_after 1m;
配置块: http、server、location、if 此配置表示Nginx向客户端发送的响应长度超过limit_rate_after后才开始限速。例如:
limit_rate_after 1m;
limit_rate 100k;