前一篇: 一、nginx服务的参数配置解析
后一篇:三、nginx服务器的参数配置解析
目录
1、nginx作为web服务器使用的配置
2、nginx作为web服务涉及的配置参数解析
1、nginx作为web服务器使用的配置
配置框架:
http {undefined
upstream {undefined
...
}
server {undefined
location URL {undefined
root "/path/to/somedir"
...
}
#类似于httpd中的<Location>,用于定义URL与本地文件系统的映射关系
location URL {undefined
if ... {undefined
...
}
}
}
#每个server类似于httpd中的一个<VirtualHost>
server {undefined
...
}
}
注意:与http相关的额指令仅能够防止与http、server、location、upstream、if上下文,但有些指令仅应用于这5种上下文的某些种。
2、nginx作为web服务涉及的配置参数解析
#返回错误页面时是否在 Server 中注明 Nginx 版本
语法:server_tokens on | off;
默认:server_tokens on;
配置块:http server location
#优化磁盘IO设置,指定nginx是否调用sendfile函数来输出文件,普通应用设为on,下载等磁盘IO高的应用,可设为off
sendfile 系统调用
语法:sendfile on | off
默认:sendfile off;
配置块:http server location
可以启用 Linux 上的 sendfile 系统调用来发送文件,它减少了内核态与用户态之间的两次内存复制,这样就会从磁盘中读取文件后直接在内核态发送到网卡设备,提高了发送文件的效率。
#AIO 系统调用
语法:aio on | off;
默认:aio off;
配置块:http server location
此配置项表示是否在 FreeBSD 或 Linux 系统上启用内核级别的异步文件 I/O 功能。
注意,它与 sendfile 功能是互斥的。
#设置nginx在一个数据包里发送所有头文件,而不是一个接一个的发送,设置nginx不要缓存数据,而是一段一段的发送,
语法:tcp_nopush on|off
默认:tcp_nopush off;
配置块:http server location
#长连接的超时时长,默认为75s
语法:keepalive_timeout time(默认单位:秒);
默认:keepalive_timeout 75;
配置块:http server location
#在一个长连接所能够允许请求的最大资源数
语法:keepalive_requests n;
默认:keepalive_requests 100;
配置块:http server location
#为制定类型的User Agent禁用长连接,对某些浏览器禁用 keepalive 功能
语法:keepalive_disable [msie6|safari|none]...
默认:keepalive_disable msie6 safari
配置块:http server location
#是否对长连接使用TCP_NODELAY选项,不将多个小文件合并传输
语法:tcp_nodelay on|off;
默认:tcp_nodelay on;
配置块:http server location
#读取http请求报文首部的超时时长
语法:client_header_timeout time (默认单位:秒);
默认:client_header_timeout 60;
配置块:http server location
超时返回480。
#读取http请求报文body部分(包体)的超时时长
语法:client_body_timeout time(默认单位:秒);
默认:client_body_timeout 60;
配置块:http server location
#发送响应报文的超时时长
语法:send_timeout time;
默认:send_timeout 60;
配置块:http server location
#告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。
语法:reset_timeout_connection on|off;
默认:reset_timeout_connection off;
配置块:http server location
#启用lingering_close控制 Nginx 关闭用于连接的方式。always 表示关闭用户连接前必须无条件地处理连接上的素有用于发送的数据。off 表示关闭连接时完全不管连接上是否已经有准备就绪的来自用户的数据。on 是中间值,一般情况下在关闭连接前都会处理连接上的用于发送的数据,除了有些情况下在业务认定这之后的数据是不必要的。
语法:lingering_close off|on|always;
默认:lingering_close on;
配置块:http server location
#超过了lingering_time设置的时间后,Nginx将不管用户是否仍在上传,都会把连接关闭掉
语法:lingering_time time;
默认:lingering_time 30s;
配置块:http server location
#lingering_close生效后,在关闭连接前,会检测是否有用户发送的数据到达服务器,如果超过lingering_timeout时间后还没有数据可读,就直接关闭连接;否则,必须在读取完连接缓冲区上的数据并丢弃掉后才会关闭连接。
语法:lingering_timeout time;
默认:lingering_timeout 5s;
配置块:http server location
#设置用户保存各种key的共享内存的参数,5m指的是5兆
limit_conn_zone $binary_remote_addr zone=addr:5m;
#为给定的key设置最大的连接数,这里的key是addr,设定的值是100,就是说允许每一个IP地址最多同时打开100个连接
limit_conn addr 100;
#include指在当前文件中包含另一个文件内容,这个文件是存在和conf配置文件所在的同一个目录下的
include mime.types;
#设置文件使用默认的mine-type,当找不到相应的 MIME type 与文件扩展名之间的映射时,使用默认的 MIME type 作为 HTTP header 中的 Content-Type。
语法:default_type MIME-type;
默认:default_type text/html;
配置块:http server location
MIME type 与文件扩展的映射
语法:type {...};
配置块:http server location
定义 MIME type 到文件扩展名的映射。多个多个扩展名可以映射到同一个 MIME type。例如:
types {
text/html html;
text/html conf;
image/gif gif;
image/jpeg jpg;
}
#为了快速寻找到相应 MIME type,Nginx 使用散列表来存储 MIME type 与文件扩展名。types_hash_bucket_size 设置了每个散列桶占用的内存大小。
语法:types_hash_bucket_size size;
默认:types_hash_bucket_size 32|64|128;
配置块:http server location
#types_hash_max_size 影响散列表的冲突率。types_hash_max_size 越大,就会消耗更多的内存,但散列 key 的冲突率就会降低,检索速度就更快。
语法:types_hash_max_size size;
默认:types_hash_max_size 1024;
配置块:http server location
#设置默认字符集
charset UTF-8;
#设置nginx采用gzip压缩的形式发送数据,减少发送数据量,但会增加请求处理时间及CPU处理时间,需要权衡
gzip on;
#加vary给代理服务器使用,针对有的浏览器支持压缩,有个不支持,根据客户端的HTTP头来判断是否需要压缩
gzip_vary on;
#nginx在压缩资源之前,先查找是否有预先gzip处理过的资源
gzip_static on;
#为指定的客户端禁用gzip功能
gzip_disable "MSIE[1-6]\.";
#允许或禁止压缩基于请求和相应的响应流,any代表压缩所有请求
gzip_proxied any;
#设置对数据启用压缩的最少字节数,如果请求小于10240字节则不压缩,会影响请求速度
gzip_min_length 10240;
#缓冲(压缩在内存中缓冲几块? 每块多大?)
gzip_buffers 16 8k;
#设置数据压缩等级,1-9之间,9最慢压缩比最大,越大压缩率越高,同时消耗cpu资源也越多,建议设置在4左右
gzip_comp_level 2;
#设置需要压缩的数据格式
gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss;
样例:
gzip on;
gzip_min_length 1k;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/css text/xml application/javascript application/atom+xml application/rss+xml text/plain application/json application/x-javascript application/xml text/javascript;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
#文件缓存会在内存中存储以下 3 种信息。
1)文件句柄、文件大小和上次修改时间。
2)已经打开过的目录结构。
3)没有找到的或者没有权限操作的文件信息。
这样,通过读取缓存就减少了对磁盘的操作。
语法:open_file_cache max = N[inactive = time] | off;
默认:open_file_cache off;
配置块:http server location
max:表示在内存中存储元素的最大个数。当达到最大限制数量后,将采用 LRU(Least Recently Used)算法从缓存中淘汰最近最少使用的元素。
inactive:表示在 inactive 制定的时间段内没有被访问过的元素将会被淘汰。默认时间为60秒。
off:关闭缓存功能。
#开发缓存的同时也指定了缓存文件的最大数量,20s如果文件没有请求则删除缓存
open_file_cache max=100000 inactive=20s;
#指多长时间检查一次缓存的有效信息
语法:open_file_cache_valid time;
默认:open_file_cache_calid 60s;
配置块:http server location
#文件缓存最小的访问次数,只有访问超过5次的才会被缓存
语法:open_file_cache_min_uses number;
默认:open_file_cache_min_uses 1;
配置块:http server location
它与 open_file_cache 中的 inactive 参数配合使用。如果在 inactive 指定的时间内,访问次数超过了 open_file_cache_min_uses 制定的最少次数,那么将不会淘汰出缓存。
#此配置选项表示是否在文件缓存中缓存打开文件时出现的找不到路径。没有权限等错误信息。
语法:open_file_cache_errors on | off;
默认:open_file_cache_errors off;
配置块:http server location
#允许客户端请求的最大单文件字节数,浏览器在发送含有较大 HTTP 包体的请求时,其头部会有一个 Content-Length 字段,client_max_body_size 是用来限制 Content-Length 所示值的大小的。
语法:client_max_body_size size;
默认:client_max_body_size 1m;
配置块:http server location
#HTTP 包体只存储到磁盘文件中
语法:client_body_in_file_only on|clean|off;
默认:client_body_in_file_only off;
配置块:http server location
当值为非 off 时,用户请求中的 HTTP 包体一律存储到磁盘文件中,即使只有0字节也会存储为文。档请求结束时,如果配置为 on,则这个文件不会被删除(该配置一般用于调试、定位问题),但如果配置为 clean,则会删除该文件。
#HTTP 包体尽量写入到一个内存 buffer 中
语法:client_body_in_single_buffer on|off
默认:client_body_in_single_buffer off;
配置块:http server location
#存储 HTTP 头部的内存 buffer 大小
语法:client_header_buffer_size size;
默认:client_header_buffer_size 1k;
配置块:http server
3存储超大 HTTP 头部的内存 buffer 大小
语法:lager_client_header_buffers number size;
默认:lager_client_header_buffer 4 8k;
配置块:http server
#存储 HTTP 包体的内存 buffer 大小
语法:client_body_buffer_size size;
默认:client_body_buffer_size 8k/16k;
配置块:http server location
#HTTP 包体的临时存放目录
语法:client_body_temp_path dir-path [level1[level2[level3]]]
默认:client_body_temp_path clent_body_temp;
配置块:http sever location
#引用/etc/nginx/vhosts下的所有配置文件,如果主机名众多的情况下可以每个主机名建立一个文件,以方便管理
include /etc/nginx/vhosts/*;