文章目录
一.优化文件传输方式
sendfile on;
tcp_nopush on;
tcp_nodelay on;
1.sendfile
是否开启高效的文件传输模式
off : 使用传统文件传输协议:read+write,造成4次上下文切换和4次数据拷贝
on:使用零拷贝技术:sendfile ,造成2次上下文切换和2次数据拷贝
2.tcp_nopush
必须在sendfile打开的状态下才会生效,主要是用来提升网络包的传输效率
3. tcp_nodelay
必须在keep-alive连接开启的情况下才生效,来提高网络包传输的实时性
sendfile开启高效的文件传输模式,tcp_nopush开启确保在发送到客户端之前数据包已经充分填满,减少了网络开销,并加快了文件发送的速度。然后,当它到达最后一个可能因为没有填满而暂停的数据包时,Nginx会忽略tcp_nopush参数,然后tcp_nodelay强制套接字发送数据
二.静态资源压缩
gzip on; #开启gzip功能
gzip_types *; #压缩源文件类型,根据具体的访问资源类型设定
gzip_comp_level 6; #gzip压缩级别
gzip_min_length 1024; #进行压缩响应页面的最小长度,contentlength
gzip_buffers 4 16K; #缓存空间大小
gzip_http_version 1.1; #指定压缩响应所需要的最低HTTP请求版本
gzip_vary on; #往头信息中添加压缩标识
gzip_disable "MSIE [1-6]\."; #对IE6以下的版本都不进行压缩
gzip_proxied off; #nginx作为反向代理压缩服务端返回数据的条件
gzip_static on;
1.gzip_comp_level
用于设置Gzip压缩程度,级别从1-9,1表示要是程度最低,要是效率最高,9刚好相反,压缩程度最高,但是效率最低最费时间
2.gzip_min_length
针对传输数据的大小,选择性地开启和关闭Gzip功能。Gzip压缩功能对大数据的压缩效果明显,但是如果要压缩的数据比较小,可能出现越压缩数据量越大的情况
三.Gzip和sendfile共存问题
开启sendfile以后,在读取磁盘上的静态资源文件的时候,可以不经过用户进程将静态文件通过网络设备发送出去,但是Gzip要想对资源压缩,是需要经过用户进程进行操作的。可使用ngx_http_gzip_static_module模块的gzip_static指令来解决
1.添加模块到Nginx的实现步骤
(1)查询Nginx的配置参数
nginx -V
(2)将nginx安装目录下sbin目录中的nginx二进制文件进行更名
cd /usr/local/nginx/sbin
mv nginx nginxold
(3) 进入Nginx的安装目录
(4)执行make clean清空之前编译的内容
make clean
(5)使用configure来配置参数,把之前的配置参数一并添加
./configure --with-http_gzip_static_module
(6)使用make命令进行编译
make
(7) 将objs目录下的nginx二进制执行文件移动到nginx安装目录下的sbin目录中
mv objs/nginx /usr/local/nginx/sbin
(8)执行更新命令
make upgrade
四.生产配置
http块中添加