顶层的配置
user www-data;
pid /var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 100000;
user 和 pid 默认设置
worker_processes 定义了 nginx 对外提供 web 服务时的 worder 进程数。不能确定的时候,将其设置为可用的 CPU 内核数将是一个好 的开始(设置为“auto”将尝试自动检测它)
worker_rlimit_nofile 更改 worker 进程的最大打开文件数限制。设置后操作系统和 Nginx 可以处理比“ulimit -a”更多的文件,把这个值设高,这样 nginx 就不会有 “too many open files”问题了
Events 模块
events 模块中包含 nginx 中所有处理连接的设置。
events {
worker_connections 2048;
multi_accept on;
use epoll;
}
worker_connections 设置可由一个 worker 进程同时打开的最大连接数
multi_accept 告诉 nginx 收到一个新连接通知后接受尽可能多的连接
use 设置用于复用客户端线程的轮询方法。如果你使用 Linux 2.6+,你应该使用 epoll
HTTP 模块
http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
...
}
server_tokens 并不会让 nginx 执行的速度更快,但它可以关闭在错误页面中的 nginx 版本数字,这样对于安全性是有好处的
tcp_nopush 告诉 nginx 在一个数据包里发送所有头文件,而不一个接一个的发送
tcp_nodelay 告诉 nginx 不要缓存数据,而是一段一段的发送–当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值
reset_timeout_connection on;
告诉 nginx 关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间
send_timeout 10;
指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx 就会关闭连接
limit_conn addr 100;
limit_conn 为给定的 key 设置最大连接数。这里 key 是 addr,我们设置的值是 100,也就是说我们允许每一个 IP 地址最多同时打开有 100 个连接。
gzip on;
gzip_disable "msie6";
# gzip_static on;
gzip_proxied any;
gzip_min_length 1000;
gzip_comp_level 4;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip 是告诉 nginx 采用 gzip 压缩的形式发送数据。这将会减少我们发送的数据量
gzip_disable 为指定的客户端禁用 gzip 功能
gzip_static 告诉 nginx 在压缩资源之前,先查找是否有预先 gzip 处理过的资源
gzip_min_length 设置对数据启用压缩的最少字节数。如果一个请求小于 1000 字节,我们最好不要压缩它,因为 压缩这些小的数据会降低处理此请求的所有进程的速度
gzip_comp_level 设置数据的压缩等级。这个等级可以是 1-9 之间的任意数值,9 是最慢但是压缩比最大的。我们 设置为 4,这是一个比较折中的设置
# cache informations about file descriptors, frequently accessed files # can boost performance, but you need to test those values
open_file_cache max=100000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
open_file_cache 打开缓存的同时也指定了缓存最大数目,以及缓存的时间。我们可以设置一个相对高的最大时 间,这样我们可以在它们不活动超过 20 秒后清除掉
open_file_cache_valid 在 open_file_cache 中指定检测正确信息的间隔时间
open_file_cache_min_uses 定义了 open_file_cache 中指令参数不活动时间期间里最小的文件数