Nginx核心参数配置

Nginx核心参数配置讲解

Nginx 的核心参数配置,主要作用于 http 块、server 块和 location 块。

案例

http 块推荐使用的配置如下:

http{ include mime.types; default_type application/octet-stream; server_tokens off; log_format main '$http_x_real_ip - $remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for' ' "$request_time"'; server_names_hash_bucket_size 128; client_header_buffer_size 128k; large_client_header_buffers 4 128k; client_max_body_size 100m; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 600s; fastcgi_connect_timeout 600s; fastcgi_send_timeout 600s; fastcgi_read_timeout 600s; fastcgi_buffer_size 128k; fastcgi_buffers 8 128k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml application/json; gzip_vary on; # 加载sites-enabled下所有的站点配置 include /usr/local/nginx/sites-enabled/*.conf; }

client_body_buffer_size

语法

client_body_buffer_size size;

默认值

client_body_buffer_size 8k|16k;

上下文

http, server, location

说明

设置用于读取客户端请求体的缓冲区大小。在请求体大于缓冲区的情况下,将整个主体或仅其部分写入缓冲。默认情况下,缓冲区大小等于两个内存页。

这是 x86 或其他的其他 32 位平台上的应为 8K,在 X86-64 或其他 64 位平台上通常为 16K。

client_body_temp_path

语法

client_body_temp_path path [level1 [level2 [level3]]];

默认值

client_body_temp_path client_body_temp;

上下文

http, server, location

说明

定义用于存储持有客户端请求主体的混存文件的目录。可在指定目录下使用三级子目录层次结构。例如,在以下配置中:

client_body_temp_path /spool/nginx/client_temp 1 2;

一个临时文件的路径可能是这样的:

/spool/nginx/client_temp/7/45/00000123457

client_body_timeout

语法

client_body_timeout time;

默认值

client_body_timeout 60s;

上下文

http, server, location

说明

定义用于读取客户端请求体的超时时间。超时仅设置在两个连续读取操作之间的时间段内,而不是用于整个请求体的传输。如果客户端在此时间内不发送任何内容,则请求终止(408)(请求超时)错误。

client_header_buffer_size

语法

client_header_buffer_size size;

默认值

client_header_buffer_size 1k;

上下文

http, server

说明

设置用于读取客户端请求头的缓冲区大小。对于大多数请求,1K 字节的缓冲区就足够了。但是,如果请求包括长 cookie,或者来自 WAP 客户端,那么它可能不适合 1K。

如果请求行或请求头字段不适合这个缓冲区,则分配由 large_client_header_buffers 指令配置的更大的缓冲区。

client_header_timeout

语法

client_header_timeout time;

默认值

client_header_timeout 60s;

上下文

http, server

说明

定义用于读取客户端请求标头的超时。如果客户端在此时间内不发送整个请求头,则请求终止(408)(请求超时)错误。

client_max_body_size

语法

client_max_body_size size;

默认值

client_max_body_size 1m;

上下文

http, server, location

说明

设置客户端请求主体的最大允许大小,在 “Content-Length” 请求头字段中指定。如果请求中的大小超过了配置值,则将 413(请求实体过大)错误返回给客户端。

请注意浏览器不能正确显示此错误。将大小设置为 0 禁用客户端请求主体大小的检查。

connection_pool_size

语法

connection_pool_size size;

默认值

connection_pool_size 256|512;

上下文

http, server

说明

允许精确调整每个连接内存分配。该指令对性能影响最小,一般不应使用。默认情况下,32 位平台上的大小等于256 字节,64 位平台上的字节为 512 字节。

在版本 1.9 之前,默认值在所有平台上为 256。

default_type

语法

default_type mime-type;

默认值

default_type text/plain;

上下文

http, server, location

说明

定义响应的默认 MIME 类型。可以使用类型指令来设置文件扩展名到 MIME 类型的映射。

keepalive_timeout

语法

keepalive_timeout timeout [header_timeout];

默认值

keepalive_timeout 75s;

上下文

http, server, location

说明

第一个参数设置一个超时时间,在此期间保持活跃的客户端连接将在服务器端保持打开状态。设置 0 将禁用保持活动的客户端连接。

第二个请求参数将会十返回的 response 响应头信息包含 “Keep-Alive: timeout=time” 字段。2 个参数是不一样的。

Mozilla and Konqueror 支持 “Keep-Alive: timeout=time”,MSIE 关闭保持活动连接为 60 秒。

large_client_header_buffers

语法

large_client_header_buffers number size;

默认值

large_client_header_buffers 4 8k;

上下文

http, server

说明

设置用于读取大客户请求头的缓冲区的最大数量和大小。请求行不能超过一个缓冲区的大小,或者将 414(请求URI过大)错误返回给客户端。

请求头字段不能超过一个缓冲区的大小,或者 400(坏请求)错误返回给客户端。仅根据需求分配缓冲器。默认情况下,缓冲区大小等于 8K 字节。如果在请求处理结束之后,连接被转换为保持活动状态,则释放这些缓冲器。

open_file_cache

语法

open_file_cache off; open_file_cache max=N [inactive=time];

默认值

open_file_cache off;

上下文

http, server, location

说明

配置缓存的信息,错误的缓存应该使用 open_file_cache_errors 配置,支持以下参数:

参数 说明
max 设置缓存中的最大元素数;在缓存溢出上删除最近最少使用的(LRU)元素;
inactive 定义如果在此期间没有访问元素,则从缓存中删除该元素的时间;默认情况下,为60秒;
off 禁用

例如:

open_file_cache max=65535 inactive=60s;open_file_cache_valid 30s;open_file_cache_min_uses 2;open_file_cache_errors on;

open_file_cache_errors

语法

open_file_cache_errors on | off;

默认值

open_file_cache_errors off;

上下文

http, server, location

说明

启用或禁用 open_file_cache 缓存文件查找错误。

open_file_cache_min_uses

语法

open_file_cache_min_uses number;

默认值

open_file_cache_min_uses 1;

上下文

http, server, location

说明

设置由 open_file_cache 指令的非活动参数配置的期间内文件访问的最小数量,该文件描述符在缓存中保持打开是必需的。如果有一个文件在 inactive 时间内一次没被使用,它将被移除。

open_file_cache_valid

语法

open_file_cache_valid time;

默认值

open_file_cache_valid 60s;

上下文

http, server, location

说明

设置一个时间,在该时间之后 open_file_cache 文件应该被验证。

send_lowat

语法

send_lowat size;

默认值

send_lowat 0;

上下文

http, server, location

说明

如果该指令设置为非零值,则 nginx 将尝试通过使用 kqueue 方法的 NOTE_LOWAT 标志或 SO_SNDLOWAT 套接字选项来最小化客户端套接字上的发送操作的数量。在这两种情况下都使用指定的大小。

该指令在 Linux、Solaris 和 Windows 上被忽略。

send_timeout

语法

send_timeout time;

默认值

send_timeout 60s;

上下文

http, server, location

说明

这个超时时间是发送响应的超时时间,即 Nginx 服务器向客户端发送了数据包,但客户端一直没有去接收这个数据包。如果某个连接超过 send_timeout 定义的超时时间,那么 Nginx 将会关闭这个连接。

sendfile

语法

sendfile on | off;

默认值

sendfile off;

上下文

http, server, location, if in location

说明

设置为 on 可以启用 Linux 上的 sendfile 系统调用来发送文件,它减少了内核态与用户态之间的两次内存复制,这样就会从磁盘中读取文件后直接在内核态发送到网卡设备,提高了发送文件的效率。

server_names_hash_bucket_size

语法

server_names_hash_bucket_size size;

默认值

server_names_hash_bucket_size 32|64|128;

上下文

http

说明

设置服务器名称哈希表的分组大小。默认值取决于处理器的高速缓存行的大小。

server_names_hash_max_size

语法

server_names_hash_max_size size;

默认值

server_names_hash_max_size 512;

上下文

http

说明

设置服务器名称哈希表的最大大小。保存服务器名字的 hash 表是由指令 server_names_hash_max_size 和server_names_hash_bucket_size 所控制的。参数 hash bucket size 总是等于 hash 表的大小,并且是一路处理器缓存大小的倍数。

在减少了在内存中的存取次数后,使在处理器中加速查找 hash 表键值成为可能。如果 hash bucket size 等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为 2。第一次是确定存储单元的地址,第二次是在存储单元中查找键值。因此,如果 Nginx 给出需要增大 hash max size 或 hash bucket size 的提示,那么首要的是增大前一个参数的大小。

server_tokens

语法

server_tokens on | off | build | string;

默认值

server_tokens on;

上下文

http, server, location

说明

启用或禁用在错误页和响应头字段中发布 NGNIX 版本。

tcp_nodelay

语法

tcp_nodelay on | off;

默认值

tcp_nodelay on;

上下文

http, server, location

说明

对 keepalive 连接是否使用 TCP_NODELAY 选项,此外,它在 SSL 连接上启用,用于无缓冲的代理,以及用于 WebSocket 代理。

tcp_nopush

语法

tcp_nopush on | off;

默认值

tcp_nopush off;

上下文

http, server, location

说明

在打开 sendfile 选项时,确定是否开启 FreeBSD 系统上的 TCP_NOPUSH 或 Linux 系统上的 TCP_CORK 功能。开启此选项允许在 Linux 和 FreeBSD 4.x 上将响应头和正文的开始部分一起发送;一次性发送整个文件。

Nginx核心参数配置总结

Nginx 的核心参数配置,主要作用于 http 块、server 块和 location 块。