nginx 优化

顶层的配置

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 中指令参数不活动时间期间里最小的文件数

猜你喜欢

转载自tzhennan.iteye.com/blog/2418242