接下来,调整配置Nginx worker进程的最大打开文件数,这个控制连接数的参数为worker_rlimit_nofile。该参数的实际配置如下:
# 最大打开文件数,可设置为系统优化后的ulimit -HSn的结果,调整系统文件描述和这个问题有相同之处 worker_rlimit_nofile 65535; 开启高效文件传输模式 1.设置参数: sendfile on;sendfile参数用于开启文件的高效传输模式。同时将tcp_nopush和tcp_nodelay两个指令设置为on,可防止网络及磁盘I/O阻塞,提升Nginx工作效率。
sendfile on; 2.设置参数:tcp_nopush on;参数作用:激活或禁用
限制文件上传大小下面介绍如何调整上传文件的大小(http Request body size)限制。
在nginx.conf的http段增加如下配置参数:
client_max_body_size 10m; # 最大允许上传的文件大小根据业务需求来设置如果上传的文件大小超过该设置,那么就会报413 Request Entity Too Large的错误。
配置gzip压缩实现性能优化 Nginx gzip压缩功能介绍Nginx gzip压缩模块提供了压缩文件内容的功能,用户请求的内容在发送到用户客户端之前,Nginx服务器会根据一些具体的策略实施压缩策略,以节约网站出口带宽,同时加快数据传输效率,来提升用户访问体验。
Nginx gzip压缩的优点提升网站用户体验:发送给用户的内容小了,用户访问单位大小的页面就加快了,用户体验提升了,网站口碑就好了
节约网站带宽成本:数据是压缩传输的,因此节省了网站的带宽流量成本,不过压缩时会稍微消耗一些CPU资源,这个一般可以忽略不计
需要和不需要压缩的对象纯文本内容压缩比很高,因此,纯文本的内容最好进行压缩,例如:html、css、js、xml、shtml等格式的文件
被压缩的纯文本文件必须大于1KB,由于压缩算法的特殊原因,极小的文件压缩后可能反而变大
图片、视频(流媒体)等文件尽量不要压缩,因为这些文件大多都是经过压缩的,如果再压缩很可能不会减小或减小很少,或者可能增大,同事压缩时还会消耗大量的CPU、内存资源
参数介绍及配置使用此压缩功能与早期的Apache服务的mod_deflate压缩功能很相似,Nginx的gzip压缩功能依赖于ngx_http_gzip_module模块,默认已安装。
对应的压缩参数说明如下:
#压缩配置 # 开启gzip压缩功能 gzip on; # 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩。 # 建议设置成大于1K,如果小于1K可能会越压越大 gzip_min_length 1k; # 压缩缓存区大小。表示申请4个单位的位16K的内存作为压缩结果流缓存, # 默认值是申请与原始数据大小相同的内存空间来存储gizp压缩结构 gzip_buffers 4 16k; # 压缩版本(默认1.1),用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器都支持GZIP解压,使用默认即可 gzip_http_version 1.1; # 压缩比率。用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗CPU资源 gzip_comp_level 2; # 用来指定压缩的类型 gzip_types text/plain text/css text/xml application/javascript; # vary header支持。该选项可以让前端的缓存服务器缓存经过gzip压缩的页面,例如用Squid缓存经过Nginx压缩的数据 gzip_vary on;不同Nginx版本中,gzip_types的配置可能会有不同,对应的文件类型,请查看安装目录的mime.types文件
增加http accept-ranges头来提高性能网页的图片,js ,css ,视频 都加 http accept-ranges头,以支持多线程加载,断点续传,提高性能!目前各大网站都在使用此方式!
server { listen 80; server_name p2hp.com; location ~ ^/(img/|js/|css/|upload/|font/|fonts/|res/|video) { add_header Access-Control-Allow-Origin *; add_header Accept-Ranges bytes; root /var/www/...; access_log off; expires 30d; } } Nginx日志相关优化与安全 Nginx access日志切割为什么要做日志切割?
因为随时系统访问量的增长,访问日志里会出现越来越多的数据,如果不去按照时间去做合理的日志切割,访问日志里的数据多到无法打开的地步,所以需要做日志切割。
创建一个runlog.sh文件,按天切割
LOGPATH=http://www.likecs.com/usr/local/nginx/logs/access.log BASEPATH=http://www.likecs.com/usr/local/nginx/logs/access/$(date -d yesterday +%Y%m) mkdir -p $BASEPATH BACKUP=$BASEPATH/$(date -d yesterday +%Y%m%d).access.log mv $LOGPATH $BACKUP touch $LOGPATH /usr/local/nginx/sbin/nginx -s reopen然后配合定时任务,每天零点切割一次
0 0 * * * sh /usr/local/nginx/logs/runlog.sh