Created
December 29, 2009 15:26
-
-
Save why404/265368 to your computer and use it in GitHub Desktop.
Nginx配置说明
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 指定Nginx工作的用户和用户组,www-data 是我们新建的一个虚拟用户 | |
user www-data www-data; | |
# 指定Nginx工作的进程数,默认是1。建议参考CPU内核数,双核处理器又是超线程的话可以设置为4个,避免进程堵塞在IO等待中。 | |
worker_processes 4; | |
events { | |
use epoll; # 指定I/O模式,epoll是Linux内核2.6(或以上)中一种比较高效的异步IO模型 | |
worker_connections 8000; # 规定单个进程可以处理的请求数 | |
# 并发总数是 worker_processes 和 worker_connections 的乘积 | |
# 即 max_clients = worker_processes * worker_connections | |
# 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4 | |
# 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000 | |
# worker_connections 值的设置跟物理内存大小有关 | |
# 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数 | |
# 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右 | |
# 我们来看看360M内存的VPS可以打开的文件句柄数是多少: | |
# $ cat /proc/sys/fs/file-max | |
# 输出 34336 | |
# 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内 | |
# 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置 | |
# 使得并发总数小于操作系统可以打开的最大文件数目 | |
# 其实质也就是根据主机的物理CPU和内存进行配置 | |
# 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。 | |
} | |
http { | |
# 该值设置参考 http://wiki.nginx.org/NginxOptimizations 中的 Hash Tables 这节内容 | |
server_names_hash_bucket_size 64; | |
# 使Nginx可以跑Ruby on Rails网站程序 | |
passenger_root /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/passenger-2.2.8; | |
passenger_ruby /opt/ruby-enterprise-1.8.7-2009.10/bin/ruby; | |
# 载入MIME类型 | |
include mime.types; | |
# 设置默认的MIME类型 | |
default_type application/octet-stream; | |
# 开启 sendfile, 指定Nginx调用内核级的 sendfile 函数以提高web传输文件的效率 | |
sendfile on; | |
# 同时开启 tcp_nopush,将响应请求的http头信息压入一个数据包后发出。参考 http://wiki.nginx.org/ReadMoreAboutTcpNopush | |
tcp_nopush on; | |
# 关闭tcp_nodelay,以便将多个数据集合(例如HTTP响应的头和正文)一并发送。参考 http://wiki.nginx.org/ReadMoreAboutTcpNodelay | |
tcp_nodelay off; | |
# 设置连接超时秒数 | |
keepalive_timeout 15; | |
# gzip 压缩输出设置,参考 http://wiki.nginx.org/NginxHttpGzipModule | |
gzip on; | |
gzip_min_length 1000; | |
gzip_comp_level 8; | |
gzip_proxied any; | |
gzip_types text/plain text/css text/javascript text/xml application/x-javascript application/xml application/xml+rss; | |
# 加载vhost配置文件 | |
include /opt/nginx/sites-enabled/*; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment