开源是一种精神,分享是一种美德!

nginx配置文件详解

Linux W•X 282℃

以下是nginx配置文件中文释义,部分来自网络,具体配置信息根据生产环境的实际需求调整!蓝色字体为中文解释。

user nobody nobody;
worker_processes 2; //nginx进程数,建议按照cpu数目来指定,一般跟cpu核数相同或为它的倍数。
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200; //每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。

events
{
use epoll;                             //nginx事件处理模型优化use epoll;
worker_connections 6000; //每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_proces                                               ses*worker_connections。
}
# 设定 mime 类型,类型由 mime.type 文件定义
include mime.types;
default_type application/octet-stream;

# 服务器名字的hash表大小,单位KB
server_names_hash_bucket_size 3526;
server_names_hash_max_size 4096;

# nginx 默认定义日志格式
# https://www.cnblogs.com/nfyx/p/9158137.html https://blog.csdn.net/qq_38157974/article/details/78644842
log_format combined_realip ‘$remote_addr $http_x_forwarded_for [$time_local]’
‘$host “$request_uri” $status’
‘”$http_referer” “$http_user_agent”‘;

# 参数sendfile on 用于开启文件高效传输模式,同时将tcp_nopush on 和tcp_nodelay on 两个指令设置为on,可防止网络及磁盘I/O阻塞,提升Nginx工作效率,也就是说tcp_nopush = on 会设置调用tcp_cork方法,这个也是默认的,结果就是数据包不会马上传送出去,等到数据包最大时,
一次性的传输出去,这样有助于解决网络堵塞。https://blog.51cto.com/13673885/2299769
sendfile on;
tcp_nopush on;

#keepalive 超时时间,客户端到服务器端的连接持续有效时间,当出现对服务器的后,继请求时,keepalive-timeout 功能可避免建立或重新建立连接。
keepalive_timeout 30;

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

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

#这个超时时间是发送响应的超时时间,即Nginx服务器向客户端发送了数据包,但客户端一直没有去接收这个数据包。如果某个连接超过send_timeout定义的超时时间,那么Nginx将会关闭这个连接。
send_timeout 3m;
#允许精确调整每个连接内存分配。该指令对性能影响最小,一般不应使用。默认情况下,32位平台上的大小等于256字节,64位平台上的字节为512字节。在版本1.9之前,默认值在所有平台上为256。https://blog.csdn.net/weixin_43430036/article/details/83580821
connection_pool_size 256;

# 定义header的头信息上限大小,nginx默认的header长度上限是4k,如果超过了这个值如果header头信息请求超过了,nginx会直接返回400错误
可以通过以下2个参数来调整nginx的header上限
client_header_buffer_size 1k;
large_client_header_buffers 8 4k;

# 请求内存池默认分配4k
request_pool_size 4k;

# 设置从磁盘读取缓冲区响应的数量和大小。如果可能,客户端数据传输将被延迟,直到 Nginx 汇集到适合的数据大小。
# https://www.linuxidc.com/Linux/2015-10/124365.htm
output_buffers 4 32k;

# 延迟客户端的数据传输,尽可能让nginx有至少所指定大小字节的数据要发送时,才开始发送,此选项是在nginx层面所作的与TCP_CORK类似优化
postpone_output 1460;

# 允许上传附件的大小
client_max_body_size 300m;

# 处理客户端缓冲区大小。 大多数客户端缓冲区都来自POST方法表单提交。
client_body_buffer_size 16k;

# 为存储承载客户端请求正文的临时文件定义存储目录。在指定目录下可支持高达3层子目录结构。例如,下面的配置:
client_body_temp_path /usr/local/nginx/client_body_temp 1 2;

# 例:proxy_temp_path /usr/local/nginx/proxy_temp 1 2;
# 其中/usr/local/nginx/proxy_temp为临时文件所在目录,1表示层级1的目录名为1个数字(0-9),2表示层级2目录名为2个数字(00-99)
proxy_temp_path /usr/local/nginx/proxy_temp;

# 开启fastcgi缓存使用临时目录
fastcgi_temp_path /usr/local/nginx/fastcgi_temp;

# 这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。
fastcgi_intercept_errors on;

#提高数据的实时响应性
tcp_nodelay on;

#开启 gzip 压缩
gzip on;
gzip_min_length 1k;
gzip_buffers 4 8k;
gzip_comp_level 5;
gzip_http_version 1.1;
gzip_types text/plain application/x-javascript text/css text/htm application/xml;

 

转载请注明:LINUX! » nginx配置文件详解

喜欢 (0)