Nginx的主配置文件
user www www;
worker_processes 4;
##开启4个进程,经我测试2足够,如果你服务器cpu资源很多,那么就分配为cpu的1倍或2倍
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid var/nginx.pid;
worker_rlimit_nofile 51200;
##指一个nginx进程打开的最大文件描述符个数,理论值应该和(ulimit -n )结果数值和nginx进程数值相除的结果一致,但实际中不可能有这样均匀,所以最好和ulimit -n 的值一致。
events {
use epoll;
##使用epoll的I/O模型
worker_connections 4096;
##每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes * worker_connections
}
http {
include mime.types;
default_type application/octet-stream;
server_names_hash_max_size 512;
server_names_hash_bucket_size 128;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 1;
##keepalive超时时间
client_header_timeout 10;
client_body_timeout 10;
send_timeout 30;
client_header_buffer_size 4k;
##客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得
# open_file_cache max=51200 inactive=20s;
##这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存
# open_file_cache_valid 30s;
##这个是指多长时间检查一次缓存的有效信息
# open_file_cache_min_uses 1;
##open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
large_client_header_buffers 4 4k;
client_body_temp_path /dev/shm/nginx_temp/client_body 1 2;
######
##一般情况下压缩后的html、css、js、php、jhtml等文件,大小能降至原来的25%,也就是说,原本一个100k的html,压缩后只剩下25k。这无疑能节省很多带宽,也能降低服务器的负载。
######
gzip on; //打开gzip压缩
gzip_min_length 1024;
##设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取,默认值是0,不管页面多大都压缩,建议设置成1024,小于1k可能会越压越大
gzip_buffers 4 8k;
##设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。例如 4 4k 代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。 4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。
gzip_http_version 1.1;
##识别http的协议版本。由于早期的一些浏览器或者http客户端,可能不支持gzip自解压,用户就会看到乱码,所以做一些判断还是有必要的。注:现在除了类似于百度的蜘蛛之类的东西不支持自解压,99.99%的浏览器基本上都支持gzip解压了,所以可以不用设这个值,保持系统默认即可。
gzip_comp_level 5;
##gzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢(传输快但比较消耗cpu)。
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##匹配MIME类型进行压缩,(无论是否指定)"text/html"类型总是会被压缩的。
log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
##记录日志的格式,这里的main是自定义的,目的是在后边的vhosts/* 中用到
access_log "logs/access.log" main;
##规定记录日志的文件,格式为main格式(上边定义的)
include vhosts/*; //vhosts/目录下就是我们的虚拟主机配置文件了
}
worker_processes 4;
##开启4个进程,经我测试2足够,如果你服务器cpu资源很多,那么就分配为cpu的1倍或2倍
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid var/nginx.pid;
worker_rlimit_nofile 51200;
##指一个nginx进程打开的最大文件描述符个数,理论值应该和(ulimit -n )结果数值和nginx进程数值相除的结果一致,但实际中不可能有这样均匀,所以最好和ulimit -n 的值一致。
events {
use epoll;
##使用epoll的I/O模型
worker_connections 4096;
##每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes * worker_connections
}
http {
include mime.types;
default_type application/octet-stream;
server_names_hash_max_size 512;
server_names_hash_bucket_size 128;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 1;
##keepalive超时时间
client_header_timeout 10;
client_body_timeout 10;
send_timeout 30;
client_header_buffer_size 4k;
##客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得
# open_file_cache max=51200 inactive=20s;
##这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存
# open_file_cache_valid 30s;
##这个是指多长时间检查一次缓存的有效信息
# open_file_cache_min_uses 1;
##open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
large_client_header_buffers 4 4k;
client_body_temp_path /dev/shm/nginx_temp/client_body 1 2;
######
##一般情况下压缩后的html、css、js、php、jhtml等文件,大小能降至原来的25%,也就是说,原本一个100k的html,压缩后只剩下25k。这无疑能节省很多带宽,也能降低服务器的负载。
######
gzip on; //打开gzip压缩
gzip_min_length 1024;
##设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取,默认值是0,不管页面多大都压缩,建议设置成1024,小于1k可能会越压越大
gzip_buffers 4 8k;
##设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。例如 4 4k 代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。 4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。
gzip_http_version 1.1;
##识别http的协议版本。由于早期的一些浏览器或者http客户端,可能不支持gzip自解压,用户就会看到乱码,所以做一些判断还是有必要的。注:现在除了类似于百度的蜘蛛之类的东西不支持自解压,99.99%的浏览器基本上都支持gzip解压了,所以可以不用设这个值,保持系统默认即可。
gzip_comp_level 5;
##gzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢(传输快但比较消耗cpu)。
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##匹配MIME类型进行压缩,(无论是否指定)"text/html"类型总是会被压缩的。
log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
##记录日志的格式,这里的main是自定义的,目的是在后边的vhosts/* 中用到
access_log "logs/access.log" main;
##规定记录日志的文件,格式为main格式(上边定义的)
include vhosts/*; //vhosts/目录下就是我们的虚拟主机配置文件了
}
none