Nginx调优

常用的一些参数

1. 工作进程数量

worker_processes 4; // 一般与CPU核心数相同
worker_cpu_affinity 0001 0010 0100 1000;  // 工作进程分别与CPU绑定
2. Nginx最大打开文件数量
worker_rlimit_nofile 65535;
  • 该指令指一个Worker打开的最多文件描述符数量,理论值应该是最多文件打开数(ulimit -n)与nginx进程数相除,但请求分配并不均匀,所以最好与ulimit -n一致;
  • 文件资源限制的配置可以在/etc/security/limits.conf设置;
3. Nginx事件处理模型
events {
  use epoll;  // 使用epoll处理效率高
  worker_connections 65535; // 单个Worker进程最大连接数;
  multi_accept on;
}
4. 开启高效传输
http {
  include mime.types;
  default_type application/octet-stream;
  ……

  sendfile on;
  tcp_nopush on;
  ……
}

sendfile:开启高效文件传输模式,指定是否使用sendfile函数来输出文件,普通应用设为on,用来下载等磁盘IO重负载的设置为off,降低系统负载;
tcp_nopush:在sendfile开启情况下才有用,防止网络阻塞,减少报文段数量;

5. 连接超时时间
keepalive_timeout 60; // 链接会话超时时间;
tcp_nodelay on; // 防止网络阻塞,包含keeplived参数才有效;
client_header_buffer_size 4k; // 请求头部缓冲区大小,一般设置系统分页大小,获取分页大小命令getconf PAGESIZE;
open_file_cache max=102400 inactive=20s;  // 为打开文件指定缓存,建议和打开数量一致;
open_file_cache_valid 30s; // 多长时间检查一次缓存有效信息;
open_file_cache_min_uses 1; // 缓存最少使用次数,在inactive=20s时间内使用次数不够将被移除缓存;
client_header_timeout 15; // 设置请求头的超时时间,超时将返回request time out错误;
client_body_timeout 15; // 设置请求体超时时间,超时将返回request time out错误;
reset_timedout_connection on; // 关闭不响应的客户端连接;
send_timeout 15; // 响应客户端超时时间,指两个活动之间的时间,超时将关闭连接;
server_tokens off; // 关闭Nginx错误页面中的版本号,相对安全;
client_max_body_size 10m; // 上传文件大小限制;
6. gzip压缩

使用gzip压缩可以节约带宽,加快传输速度,但是会增加CPU消耗。

gzip on; // 开启压缩功能;
gzip_min_length 2k; // 允许压缩的页面最小字节数,字节书从Content-Length中获取,建议大于1K;
gzip_buffers   4 32k; // 压缩缓冲区大小,表示4个单位为32K的内存
gzip_http_version 1.1; // 压缩版本号;
gzip_comp_level 6; 压缩等级,等级越大CPU处理越慢,
gzip_typestext/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml; // 指定哪些类型进行压缩;
gzip_vary on;  //  varyheader支持,改选项可以让前端的缓存服务器缓存经过GZIP压缩的页面
gzip_proxied any;
7. expire缓存

缓存主要针对js、css、图片等较少改动的静态资源,expires配置在server字段里。

location ~* \.(ico|jpe?g|gif|png|bmp|swf|flv)$ {
	expires 30d;
	#log_not_found off; // 是否在error_log中记录不存在的错误
	access_log off;
}

location ~* \.(js|css)$ {
	expires 7d;
	log_not_found off; // 是否在error_log中记录不存在的错误
	access_log off;
}
8. 防盗链

防止别人直接从你网站引用图片,消耗你的流量。

location ~*^.+\.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
	valid_referers none blocked www.benet.com benet.com;
	if($invalid_referer) {
		#return 302 http://www.benet.com/img/nolink.jpg;
  		return 404;
  		break;
	}
	access_log off;
}

valid_referers 参数可以使如下形式:

  • List item
  • none :意思是不存在的Referer头(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)。
  • blocked :意为根据防火墙伪装Referer头,如:“Referer:XXXXXXX”
  • server_names :为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用“*”通配符。
9 系统文件打开数优化

Linux默认的open files为1024,可查看当前系统值

# ulimit -n  // 查看系统当前值
# ulimit -a  // 查看当前系统所有限制值

将其改大,在/etc/security/limits.conf最后增加:

*               soft    nofile           65535
*               hard   nofile           65535
*               soft    noproc         65535
*               hard   noproc         65535
发布了8 篇原创文章 · 获赞 0 · 访问量 76
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览