nginx基本配置信息详解

#user nobody;
#nginx要开启的进程数,一般默认为1

worker_processes  1;

日志,有一个[warn]: 3660#0: 20000 worker_connections are more than open file resource limit: 1024 !
原来安装好nginx之后,默认最大的并发数为1024,如果你的网站访问量过大,已经远远超过1024这个并发数,那你就要修改worker_connecions这个值 ,这个值越大,并发数也有就大。当然,你一定要按照你自己的实际情况而定,也不能设置太大,不能让你的CPU跑满100%。
所以,当你修改提高了配置文件中的worker_connections值,然后重启nginx,你就会在日志里发现,最前面我们讲到的这一个warn警告提示,大概的意思就是: 20000并发连接已经超过了打开文件的资源限制:1024!在这种情况下,我们就要修改配置文件,添加一行来解除这个限制,这就好像是apache中的ServerLimit。
打开配置文件在"event"这行上面添加这一行:
worker_rlimit_nofile xxxxx;
注意:设置了这个后,你修改worker_connections值时,是不能超过worker_rlimit_nofile的这个值,不然又会有前面的那个warn提示。
保存配置文件,退出重启nginx。
如果nginx 中worker_connections 值设置是1024,worker_processes 值设置是4,按反向代理模式下最大连接数的理论计算公式:
最大连接数 = worker_processes * worker_connections/4
查看相关资料,生产环境中worker_connections 建议值最好超过9000,计划将一台nginx 设置为10240,再观察一段时间。

events {
	    worker_connections  1024;
	}
http {

mime.types,也就是该资源的媒体类型。当web服务器收到静态的资源文件请求时,依据请求文件的后缀名在服务器的MIME配置文件中找到对应的MIME Type,再根据MIME Type设置HTTP Response的Content-Type,然后浏览器根据Content-Type的值处理文件。

include       mime.types;  #文件扩展名与文件类型映射表

有时,需要用户下载文件而不是直接播放,而Nginx在默认配置下,会根据文件的后缀来匹配相应的MIME类型,并写入Response header,导致浏览器播放文件而不是下载,这时需要通过配置让Nginx返回的MIME类型为下面这个类型:

default_type  application/octet-stream; #避免浏览器自动播放文件

sendfile: 设置为on表示启动高效传输文件的模式。sendfile可以让Nginx在传输文件时直接在磁盘和tcp socket之间传输数据。如果这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer,用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer,再用write函数把数据从用户空间的buffer写入到内核的buffer,最后到tcp socket。开启这个参数后可以让数据不用经过用户buffer。

sendfile        on;

参数是一个请求完成之后还要保持连接多久,不是请求时间多久,目的是保持长连接,减少创建连接过程给系统带来的性能损耗,类似于线程池,数据库连接池。

keepalive_timeout  65;
server {
        listen       80; 端口号
        server_name  localhost; ip地址
        location / {
            root   html; 文件夹
            index  index.html index.htm; 具体的html页面
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
             root   html;
        }
      }
}

例子:默认配置例子

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}