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 size;
client_body_buffer_size 8k|16k;
http, server, location
设置用于读取客户端请求体的缓冲区大小。在请求体大于缓冲区的情况下,将整个主体或仅其部分写入缓冲。默认情况下,缓冲区大小等于两个内存页。
这是 x86 或其他的其他 32 位平台上的应为 8K,在 X86-64 或其他 64 位平台上通常为 16K。
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 time;
client_body_timeout 60s;
http, server, location
定义用于读取客户端请求体的超时时间。超时仅设置在两个连续读取操作之间的时间段内,而不是用于整个请求体的传输。如果客户端在此时间内不发送任何内容,则请求终止(408)(请求超时)错误。
client_header_buffer_size size;
client_header_buffer_size 1k;
http, server
设置用于读取客户端请求头的缓冲区大小。对于大多数请求,1K 字节的缓冲区就足够了。但是,如果请求包括长 cookie,或者来自 WAP 客户端,那么它可能不适合 1K。
如果请求行或请求头字段不适合这个缓冲区,则分配由 large_client_header_buffers 指令配置的更大的缓冲区。
client_header_timeout time;
client_header_timeout 60s;
http, server
定义用于读取客户端请求标头的超时。如果客户端在此时间内不发送整个请求头,则请求终止(408)(请求超时)错误。
client_max_body_size size;
client_max_body_size 1m;
http, server, location
设置客户端请求主体的最大允许大小,在 “Content-Length” 请求头字段中指定。如果请求中的大小超过了配置值,则将 413(请求实体过大)错误返回给客户端。
请注意浏览器不能正确显示此错误。将大小设置为 0 禁用客户端请求主体大小的检查。
connection_pool_size size;
connection_pool_size 256|512;
http, server
允许精确调整每个连接内存分配。该指令对性能影响最小,一般不应使用。默认情况下,32 位平台上的大小等于256 字节,64 位平台上的字节为 512 字节。
在版本 1.9 之前,默认值在所有平台上为 256。
default_type mime-type;
default_type text/plain;
http, server, location
定义响应的默认 MIME 类型。可以使用类型指令来设置文件扩展名到 MIME 类型的映射。
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 number size;
large_client_header_buffers 4 8k;
http, server
设置用于读取大客户请求头的缓冲区的最大数量和大小。请求行不能超过一个缓冲区的大小,或者将 414(请求URI过大)错误返回给客户端。
请求头字段不能超过一个缓冲区的大小,或者 400(坏请求)错误返回给客户端。仅根据需求分配缓冲器。默认情况下,缓冲区大小等于 8K 字节。如果在请求处理结束之后,连接被转换为保持活动状态,则释放这些缓冲器。
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 on | off;
open_file_cache_errors off;
http, server, location
启用或禁用 open_file_cache 缓存文件查找错误。
open_file_cache_min_uses number;
open_file_cache_min_uses 1;
http, server, location
设置由 open_file_cache 指令的非活动参数配置的期间内文件访问的最小数量,该文件描述符在缓存中保持打开是必需的。如果有一个文件在 inactive 时间内一次没被使用,它将被移除。
open_file_cache_valid time;
open_file_cache_valid 60s;
http, server, location
设置一个时间,在该时间之后 open_file_cache 文件应该被验证。
send_lowat size;
send_lowat 0;
http, server, location
如果该指令设置为非零值,则 nginx 将尝试通过使用 kqueue 方法的 NOTE_LOWAT 标志或 SO_SNDLOWAT 套接字选项来最小化客户端套接字上的发送操作的数量。在这两种情况下都使用指定的大小。
该指令在 Linux、Solaris 和 Windows 上被忽略。
send_timeout time;
send_timeout 60s;
http, server, location
这个超时时间是发送响应的超时时间,即 Nginx 服务器向客户端发送了数据包,但客户端一直没有去接收这个数据包。如果某个连接超过 send_timeout 定义的超时时间,那么 Nginx 将会关闭这个连接。
sendfile on | off;
sendfile off;
http, server, location, if in location
设置为 on 可以启用 Linux 上的 sendfile 系统调用来发送文件,它减少了内核态与用户态之间的两次内存复制,这样就会从磁盘中读取文件后直接在内核态发送到网卡设备,提高了发送文件的效率。
server_names_hash_bucket_size size;
server_names_hash_bucket_size 32|64|128;
http
设置服务器名称哈希表的分组大小。默认值取决于处理器的高速缓存行的大小。
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 on | off | build | string;
server_tokens on;
http, server, location
启用或禁用在错误页和响应头字段中发布 NGNIX 版本。
tcp_nodelay on | off;
tcp_nodelay on;
http, server, location
对 keepalive 连接是否使用 TCP_NODELAY 选项,此外,它在 SSL 连接上启用,用于无缓冲的代理,以及用于 WebSocket 代理。
tcp_nopush on | off;
tcp_nopush off;
http, server, location
在打开 sendfile 选项时,确定是否开启 FreeBSD 系统上的 TCP_NOPUSH 或 Linux 系统上的 TCP_CORK 功能。开启此选项允许在 Linux 和 FreeBSD 4.x 上将响应头和正文的开始部分一起发送;一次性发送整个文件。
Nginx 的核心参数配置,主要作用于 http 块、server 块和 location 块。