您的位置:首页 > 运维架构 > Nginx

nginx优化

2018-01-12 00:00 211 查看
文章来源参考:《nginx从入门到精通》

修改nginx主配置文件nginx.conf

高层配置:

在nginx.conf文件中,少数几个高级配置在模块部分之上

以下是配置文件中选项:

user nginx;

pid /var/run/nginx.pid;

worker_processes auto;

worker_rlimit_nofile 100000;

worker_processes 定义了nginx对外提供web服务时的worker进程数,最优值取决于许多因素,包括(不限于)CPU核数量,存储数据的硬盘数量及负载模式,不确定时,将其设置为可用的CPU内核数,(设置为“auto”将尝试自动检测)。

worker_rlimit_nofile 更改worker进程的最大打开文件数限制,若无设置,此值为操作系统的限制,设置后操作系统和nginx可以处理比ulimit -a更多的文件,此值设置高点,nginx不会出现“too many open files”问题。(系统默认打开文件数为1024,使用ulimit -n命令查看的结果数值)。

events模块:

events模块中包含nginx中所有处理连接的设置:

events {

worker_connection 2048;

multi_accept on;

}

worker_connections 设置可由一个worker进程同时打开的最大连接数,如果设置了上面提到的work_rlimit_nofile,可以将此值设置很高。

最大客户数也由系统的可用socket连接数限制,所以设置超出实际的高没有好处。

multi_accept 让nginx收到一个新连接通知后接受尽可能多的连接。

http模块:

http模块控制nginx http处理的所有核心特性。

http {

server_tokens off; #关闭在错误页面中的nginx版本数字信息,提高安全性。

sendfile on; #sendfile让sendfil()发挥作用,sendfile()可以在磁盘和TCP socket之间相互拷贝数据。

tcp_nopush on; #让nginx在一个数据包里发送所有头文件,而不是一个一个的发送

tcp_nodelay on; #让nginx不要缓存数据,而是一段一段的发送,当需要及时发送数据时,设置此值,发送一小块数据信息就不能立刻得到返回值。

access_log off; #设置nginx是否将存储访问日志,关闭此选项让读取磁盘io操作更快

error_log /var/log/nginx/error.log crit; #nginx只记录严重的错误

keepalive_timeout 10; #给客户端分配keepalive链接超时时间,服务器将在此超时时间过后关闭链接,可以设置低些,让nginx持续工作时间更长。

client_header_timeout 10; #设置请求头的超时时间

client_body_timeout 10; #设置请求体的超时时间

reset_timeout_connection on; #nginx 关闭不相应的客户端连接,将会释放那个客户端所占有的内存空间。

send_timeout 10; #指定客户端的相应超时时间,此设置不会用于整个转发器,而是在两次客户端读取操作之间,如果在此时间段内,客户端没有读取任何数据,nginx就会关闭链接。

limit_conn_zone $binary_remote_addr zone=addr:5m; #用于保护各种key(如当前连接数)的共享内存的参数,5M就是5字节,这个值应该被设置的足够大以存储(32K*5)32byte状态或者(16K*5)64byte状态。

limit_conn addr 100; #为给定的key设置最大连接数,此处key是addr,设置为100,即每个ip地址最多同时打开100个连接。

include /etc/nginx/mime.types; #include只是一个在当前文件中包含另一个文件内容的指令,这里使用它来加载稍后会被用到的一系列的mime类型,

default_type text/html; #default_type设置文件使用默认的mime-type

charset UTF-8; #设置头文件中的默认的字符集

gzip on; #采用gzip压缩的形式发送数据,将会减少发送的数据量

#gzip_static on; #在nginx压缩资源之前,先查找是否有预先gzip处理过的资源,要求预先压缩你的文件,从而允许使用最高压缩比,这样nginx不用再压缩这些文件。

gzip_proxied any; #允许或禁止压缩基于请求和相应的相应流,设置为any,意味着将会压缩所有请求。

gzip_min_length 1000; #设置对数据启用压缩的最少字节数。若一个请求小于1000字节,最好不要压缩,因为压缩这些小的数据会降低处理此请求的所有进程的速度。

gzip_comp_level 4; #设置数据压缩等级,可以是1-9之间任意数字,9是最慢但压缩比最大。

gzip_type text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; #设置需要压缩的数据格式。

#cache information about file descriptors,frequently accessed files

#can boost performance ,but you need to test those values

open_file_cache max=100000 inactive=20s; #活动超过20秒open_file_cache打开缓存的同时指定缓存最大数目,以及缓存的时间,可以设置一个相对高的最大时间,可以在不后清除掉。

open_file_cache_valid 30s; #指定检测正确信息的间隔时间

open_file_cache_min_uses 2; #定义了open_file_cache中指令参数不活动时间期间里最小的文件数

open_file_cache_errors on;

include /etc/nginx/conf.d/*.conf;

include /etc/nginx/sites-enabled/*;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Nginx