Skip to content

Instantly share code, notes, and snippets.

@why404
Created December 29, 2009 15:26
Show Gist options
  • Star 24 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save why404/265368 to your computer and use it in GitHub Desktop.
Save why404/265368 to your computer and use it in GitHub Desktop.
Nginx配置说明
# 指定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