Nginx 配置说明

  |   0 评论   |   0 浏览
# 指定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/*;
}


>>> 每个人都觉得自己有理由,所以需要理解,但理解并不能化解所有局限,所以需要宽容。 <<<