nginx配置文件详解

xxuyuan 2011-10-12

列出了nginx默认配置文件 default.conf大部分命令,并加以中文注释说明,实际配置中可能没有这么复杂,这里只能作为一个参考阅读文档!

#使用的用户和组

userwwwwww;

#指定工作衍生进程数(一般等于CPU的总核数或者总核数的两倍),每个进程耗费10MB-12MB内存

worker_processes8;

#指定错误日志存放的路径,错误日志记录级别可选项为:[debug|info|noticd|warn|error|crit]

error_loglogs/error.log;

#指定错误日志级别

#error_loglogs/error.lognotice;

#error_loglogs/error.loginfo;

#指定pid存放的路径,文件内记录当前nginx主进程的ID,kill-HUP'logs/nginx.pid'

#pidlogs/nginx.pid;

#指定文件描述符数量

worker_rlimit_nofile51200;

#工作模式及连接数上限

events{

#提高linux的io操作选项,Linux系统推荐采用epoll模型,FreeBSD系统推荐采用kequeue,linux下建议开启

useepoll;

#允许最大连接数

worker_connections51200;

}

http{

#mimie.types浏览器请求的文件媒体类型

includemime.types;

#用来告诉浏览器请求的文件媒体类型

default_typeapplication/octet-stream;

#设置使用的字符集,如果一个网站有多种字符集,请不要随便设置,应该让程序员在HTML代码中通过Meta标签设置

#charsetgb2312;

#日志记录格式

#log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'

#'$status$body_bytes_sent"$http_referer"'

#'"$http_user_agent""$http_x_forwarded_for"';

#日志名称,和日志记录格式采用main

#access_loglogs/access.logmain;

server_names_hash_bucket_size128;

#用于设置客户端请求的Header头缓冲区大小,大部分情况1KB大小足够。不能超过large_client_header_buffers缓冲区大小的设置

client_header_buffer_size32k;

#该指令用于设置客户端请求的Header头缓冲区大小,默认值为4KB。

large_client_header_buffers432k;

#设置客户端能够上传的文件大小,默认为1m

client_max_body_size8m;

sendfileon;

#该指令允许或禁止使用FreeBSD上的TCP_NOPUSH,或者Linux上的TCP_CORK套接字选项。

#tcp_nopushon;

#keepalive_timeout0该指令可以使客户端到服务器端的连接持续有效

keepalive_timeout60;

#该指令允许或禁止使用套接字选项TCP_NODELAY,仅适用于keep-alive连接

tcp_nodelayon;

fastcgi_connect_timeout300;

fastcgi_send_timeout300;

#该指令用于设置upstream模块等待FastCGI进程发送数据的超时时间,默认值为60s;

fastcgi_read_timeout200;

#该指令设置FastCGI服务器相应头部的缓冲区大小。通常情况,该缓冲区大小设置等于fastcgi_buffers指令设置的一个缓冲区的大小。

fastcgi_buffer_size64k;

#该指令设置了读取FastCGI进程返回信息的缓冲区数量和大小。

fastcgi_buffers464k;

fastcgi_busy_buffers_size128k;

fastcgi_temp_file_writer_size128k;

#开启gzip压缩,对网页文件、css、js、xml等启动gzip压缩,减少数据传输量,提高访问速度。

gzipon;

#该指令允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。

gzip_min_length1k;

#设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。下面的设置代表16k为单位,按照原始数据大小以16k为单位的4倍申请内存。

gzip_buffers416k;

#识别http的协议版本。

gzip_http_version1.1;

#gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu)

gzip_comp_level2;

#匹配mime类型进行压缩,无论是否指定,“text/html”类型总是会被压缩的。

gzip_typestext/plainapplication/x-javascripttext/cssapplication/xml;

gzip_varyon;

#该指令定义了一个数据区,其中记录会话状态信息。定义一个叫“crawler”的记录去,总容量为10MB,以变量$binary_remote_addr作为会话的判断基准(即一个地址一个会话)

#limit_zonecrawler$binary_remote_addr10m;

#允许客户端请求的最大单个文件字节数

client_max_body_size300m;

#缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户

client_body_buffer_size128k;

#跟后端服务器连接的超时时间_发起握手等候响应超时时间

proxy_connect_timeout600;

#连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理

proxy_read_timeout600;

#后端服务器数据回传时间_就是在规定时间内后端服务器必须传完所有的数据

proxy_send_timeout600;

#代理请求缓存区_这个缓存区会保存用户的头信息以供Nginx进行规则处理_一般只要能保存下头信息即可

proxy_buffers16k;

#同上告诉Nginx保存单个用的几个Buffer最大用多大空间

proxy_buffers432k;

#如果系统很忙的时候可以申请更大的proxy_buffers官方推荐*2

proxy_busy_buffers_size64k;

#proxy缓存临时文件的大小

proxy_temp_file_write_size64k;

#缓存proxy_temp_path和proxy_cache_path必须在同一个分区

proxy_temp_path/data2/proxy_temp_path;

#该指令用于设置缓存文件的存放路径,设置缓存区名称为cache_one,内存缓存空间大小为200M,自动清除超过1天没有被访问的缓存数据,硬盘缓存空间大小为30GB

proxy_cache_path/data2/proxy_cache_pathlevels=1:2keys_zone=cache_one:2000minactive=1dmax_size=30g;

#include指令,使用此指令,可以包含任何你想要包含的配置文件,支持文件名匹配。

#includevhosts/*.conf;

upstreamphp_server_pool{

#weight=NUMBER——设置服务器的权重,权重数高被分配访问数越高,默认权重1.

#max_fails=NUMBER——在参数fail_timeout指定的时间内对后端服务器请求失败的次数,如果检测到后端服务器无法连接及发生服务器错误(404错误除外),则标记为失败。默认值为1.设置为0这关闭这项检查

#fail_timeout=TIME——在经历参数max_fails设置的失败次数后,暂停的时间

#down——标记服务器为永久离线状态,用于ip_hash指令

#backup——仅仅在非backup服务器全部繁忙的时候才启动

#upstream模块拥有以下变量:

#$upstream_addr:处理请求的upstream服务器地址

#$upstream_status:upstream服务器的应答状态

#$upstream_response_time:Upstream服务器响应时间(毫秒),多个响应以逗号和冒号分隔。

#$upstream_http_$HEADER:任意的HTTP协议头信息,例如:$upstream_http_host

server192.168.1.10:80weight=1max_fails=2fail_timeout=30s;

server192.168.1.11:80weight=1max_fails=2fail_timeout=30s;

server192.168.1.12:80weight=1max_fails=2fail_timeout=30s;

}

upstreammessage_server_pool{

#ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器。但无法保证后端服务器的负载均衡,所以建议后端服务器能做到session共享来代替nginx的ip_hash方式。

#且如果后端服务器有时要从Nginx负载均衡中摘除一段时间,你必须将其标记为“down”

#ip_hash;

server192.168.1.13:3245;

server192.168.1.14:3245down;

}

upstreambbs_server_pool{

server192.168.1.15:80weight=1max_fails=2fail_timeout=30s;

server192.168.1.16:80weight=1max_fails=2fail_timeout=30s;

server192.168.1.17:80weight=1max_fails=2fail_timeout=30s;

}

#第一个虚拟主机,反向代理php_server_pool这组服务器

server

{

#该指令用于设置虚拟主机监听的服务器地址和端口号。

#listen127.0.0.1:8080;

#listen8000;

#listen*:8000;

#listenlocalhost:8000;

listen80;

server_namewww.yourdomain.com;

#SSL加密浏览

sslon

ssl_certificatewww.yourdomain.com.crt;

ssl_certificate_keywww.yourdomain.com.key;

location/

{

#限制下载速度256KB/秒

limit_rate256k;

#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移

proxy_next_upstreamhttp_502http_504errortimeoutinvalid_header;

proxy_passhttp://php_server_pool;

proxy_set_headerHostwww.yourdomain.com;

proxy_set_headerX-Forwarded-For$remote_addr;

}

access_log/data1/logs/www.yourdomain.com_access.log;

}

#第二个虚拟主机,反向代理php_server_pool这组服务器

server

{

listen80;

server_namewww1.yourdomain.com;

#访问http://www1.yourdomain.com/message/***地址,反向代理message_server_pool这组服务器

location/

{

proxy_passhttp://message_server_pool;

proxy_set_headerHost$host;

}

#访问除了/message/之外的http://www1.yourdomain.com/***,反向代理php_server_pool这组服务器

location/message/

{

#DNS解析服务器的IP地址,可以在IE工具-Internet选项-连接-局域网设置-代理服务器中设置代理服务器IP地址和端口

resolver8.8.8.8;

#该指令用于设置被代理服务器端口或套接字,以及URI

proxy_passhttp://php_server_pool;

#该指令可以设置哪些从后端服务器传送过来的文件被Nginx存储。on保持文件与alias或root指令设置的目录一致,参数off不存储文件

#proxy_store/data/www$original_uri;

proxy_storeon;

#该指令用于指定创建文件和目录的权限

proxy_store_accessuser:rwgroup:rwall:r;

#指定一个本地目录来缓冲较大的代理请求

proxy_temp_path/data/temp;

#该指令用于在URL和文件系统路径之间实现映射。

alias/data/www;

#该指令允许重新定义或添加Header行道转发给被代理服务器的请求信息中,它的值可以是文本,也可以是变量,或者是文本和变量的组合。

#使用$host变量,它的值相当于服务器的主机名(如果使用域名访问,则该值为域名;如果使用IP访问,则该值为IP)。此外可以将主机名和被代理服务器的端口一起传递$host:$proxy_port

proxy_set_headerHost$host;

proxy_set_headerX-Forwarded-For$remote_addr;

}

access_log/data1/logs/www.yourdomain.com_access.log;

}

#第三个虚拟主机

server

{

listen80;

server_namebbs.yourdomain.com*.bbs.yourdomain.com;

location/

{

proxy_passhttp://bbs_server_pool;

proxy_set_headerHost$host;

proxy_set_headerX-Forwarded-For$remote_addr;

#禁止指定的IP地址或者IP段访问某些虚拟主机或目录

#deny192.168.1.1/24;

#允许指定的IP地址或者IP段访问某些虚拟主机或目录

#allow192.168.1.0/24;

}

#不记录日志

access_logoff;

}

}

想了解更多nginx知识,推荐阅读《实战Nginx:取代Apache的高性能Web服务器》

监测网站是否启用了gzip :http://gzip.zzbaike.com/

相关推荐

lwplvx / 0评论 2020-11-22
岁月如歌 / 0评论 2020-07-21