学习Nginx服务的难点在于对配置文件的理解和优化,熟练掌握Nginx配置文件参数的含义可以更快地掌握Nginx,以下为nginx.conf配置文件常用参数详解:
# 定义Nginx运行的用户和用户组
user www-data www-data;
# 启动进程,通常设置成和CPU的数量相等,Nginx默认是没有开启利用多核CPU配置的
worker_processes 4;
# 为每个进程分配CPU,以下示例将4个进程分配到4个CPU,当然可以写多个,或者将一个进程分配到多个CPU
worker_cpu_affinity 00000001 00000010 00000100 00001000;
# 该指令是当一个Nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与Nginx进程数相等,但是Nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致
worker_rlimit_nofile 102400;
# 全局错误日志及pid文件,错误日志定义等级[debug|info|notice|warn|error|crit]
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
# epoll是多路复用I/O的一种方式,但是仅用于Linux2.6以上内核,可以大大提高Nginx的性能
use epoll;
# 单个后台worker_process进程的最大并发连接数(最大连接数=连接数*进程数)
worker_connections 102400;
# 尽可能多地接受请求
multi_accept on;
}
# 设定HTTP服务器,利用它的反向代理功能提供负载均衡支持
http {
# 设定MIME类型,类型有mine.types文件定义
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 允许客户端请求的最大单文件字节数
client_max_body_size 64M;
# sendfile指定Nginx是否调用sendfile函数(zero copy方式)来输出文件,对于普通应用必须设为on,如果用来进行下载等应用磁盘I/O重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime
sendfile on;
# 开启目录列表访问,合适下载服务器,默认关闭
# autoindex on;
# 防止网络阻塞
tcp_nopush on;
# keepalive超时时间,客户端到服务器端的连接持续有效时间,当出现对服务器的后继请求时,keepalive-timeout功能可避免建立或重新建立连接
keepalive_timeout 60;
# 提高数据实时响应
tcp_nodelay on;
# 日志格式
log_format compression '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 设定日期格式
access_log /var/log/nginx/access.log compression buffer=32k;
server_tokens off;
# 开启gzip压缩
gzip on;
gzip_min_length 20;
gzip_buffers 32 4k;
gzip_http_version 1.1;
# 压缩级别大小,最大为9,值越小,压缩后比例越小,CPU处理更快,值越大,消耗CPU比较高
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml application/json;
# 缓冲区代理缓冲用户端请求的最大字节数
client_body_buffer_size 16k;
proxy_buffering on;
# Nginx与后端服务器连接超时时间(代理连接超时)
proxy_connect_timeout 90;
# 连接成功后,后端服务器响应时间(代理接收超时)
proxy_read_timeout 90;
# 设置代理服务器(Nginx)保存用户头信息的缓冲区大小
proxy_buffer_size 8k;
# proxy_buffers 缓冲区,网页平均在32KB以下,可以这样设置,高负荷下缓冲大小(proxy_buffers * 2)
proxy_buffers 8 8k;
# 设定请求缓冲
large_client_header_buffers 4 4k;
# 客户端请求头部的缓冲区大小,这个可以根据系统分页大小来设置,一般一个请求的头部大小不会超过1KB,不过一般系统分页都要大于1KB,所以这里设置为分页大小,分页大小可以用命令getconf PAGESIZE取得
client_header_buffer_size 4K;
# 为打开文件指定缓存,默认不启用,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存
open_file_cache max=102400 inactive=20s;
# 多长时间检查一次缓存的有效信息
open_file_cache_valid 30s;
# open_file_cache指定中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件更改信息一直是在缓存中打开的
open_file_cache_min_uses 1;
open_file_cache_errors on;
# 包含其他配置文件,如自定义的虚拟主机
include /etc/nginx/conf.d/*.conf;
}