当前位置: 首页 > Linux

Nginx实践(一)——Nginx作为静态资源web服务——静态资源压缩

时间:2023-04-06 22:33:08 Linux

一、静态资源web服务1、静态资源类型type文件类型浏览器端渲染HTML、CSS、JS图片JEPG、GIF、PNG视频FLV、MPEG文件TXT等下载文件二、静态资源服务场景——CDN二、静态资源核心配置1、文件读取sendfilesendfile是一种高效的文件传输方式。Sendfile设置为on,开启高效文件传输模式。sendfile允许Nginx在传输文件时直接在磁盘和tcpsocket之间传输数据。如果不开启该参数,会先在用户空间(Nginx进程空间)申请一块buffer,使用read函数从磁盘读取数据到缓存,再从缓存读取buffer到用户空间,然后使用write函数将数据从用户空间buffer写入到kernelbuffer,最后写入到tcpsocket。启用该参数后,数据不需要经过用户缓冲区。语法:sendfileon|离开;默认值:发送文件关闭;上下文:http、服务器、位置(如果在位置2中)。tcp_nopush在sendfile开启的情况下提高了网络数据包的传输效率。tcp_nopush命令在连接套接字时启用Linux系统下的TCP_CORK。此选项告诉TCP堆栈附加数据包并在数据包已满时发送它们,或者当应用程序通过显式删除TCP_CORK指示发送数据包时。这样可以发送最佳数量的数据包,从而提高网络数据包传输的效率。也就是说,当tcp_nopush=on时,结果是数据包不会立即发送出去,当数据包最大时,一次性发送出去,有助于解决网络拥塞,虽然有一点延迟。语法:tcp_nopushon|离开;默认值:tcp_nopush关闭;上下文:http,服务器,location3。tcp_nodelay提高了keepalive连接下网络数据包的实时传输。tcp_nodelay选项正好与tcp_nopush相反,数据包实时发送给用户,无需等待。语法语法:tcp_nodelayon|离开;默认值:tcp_nodelay关闭;上下文:服务器,位置4。压缩启用压缩可以加快资源响应速度,节省网络带宽资源。ngx_http_gzip_module语法启用和禁用压缩语法:gzipon|离开;默认值:gzip关闭;context:http,server,location,如果在location压缩级别配置(压缩级别越高,消耗的服务器资源越多)语法:gzip_comp_levellevel;默认值:gzip_comp_level1;上下文:http、服务器、位置gzip协议版本配置语法:gzip_http_version1.0|1.1;默认:gzip_http_version1.1;上下文:http,服务器,位置压缩扩展模块预读gzip函数ngx_http_gzip_static_module语法:gzip_staticon|关闭|始终;默认:gzip_staticoff;上下文:http、服务器、位置应用程序支持gunzip压缩ngx_http_gunzip_moduleSyntax:gunzipon|off;Default:gunzipoff;Context:http,server,locationSyntax:gunzip_buffersnumbersize;Default:gunzip_buffers324k|168k;Context:http,server,location3.静态资源压缩示例1.vim/etc/nginx/conf.d/static.confserver{#开启sendfile提高网络包的传输效率sendfileon;#配置txt|xml资源的路径位置~.*\.(txt|xml)${#开启压缩gzipon;gzip_http_version1.1;压缩包_comp_level1;gzip_types文本/普通应用程序/xml;根/流浪者/文档;}}2.nginx-sreload重新加载nginx配置文件3.创建/vagrant/doc/a.txt文件,查看文件大小[root/etc/nginx]#curlhttp://www.sina.com.cn/>/vagrant/doc/a.txt%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed100557k100557k00488k00:00:010:00:01--:--:--488k[root/etc/nginx]#ll/vagrant/doc/a.txt-rwxrwxrwx1vagrantvagrant558KJul11??10:57/vagrant/doc/a.txt*可见,并且a.txt文件大小为558K4。通过curl访问192.168.33.88/a.txt,查看http响应头信息[root/etc/nginx]#curl-I192.168.33.88/a.txt-HAccept-Encoding:gzip,defaultHTTP/1.1200OKServer:nginx/1.14.0日期:2018年7月11日星期三11:01:43GMTContent-Type:text/plainLast-Modified:2018年7月11日星期三10:57:22GMTConnection:keep-aliveETag:W/“5b45e292-8b47f”内容-Encoding:gzip从响应头信息可以看出服务器使用了gzip压缩5.通过浏览器访问192.168.33.88/a.txt,使用开发者工具查看请求文件的大小。gzip压缩后,请求的文件从558K压缩到148K,压缩率非常高。6.另外,还可以通过nginx访问查看传输文件的大小。root/etc/nginx]#tail/var/log/nginx/access.log192.168.33.1--[11/Jul/2018:11:02:46+0000]"GET/a.txtHTTP/1.1"200151549"-""Chrome/67.0.3396.99""-"可以看出传输的文件大小为151549,单位为B,换算成KB大约为148KB。