(009)Nginx静态资源web服务

  常见Nginx中间架构:静态资源web服务;代理服务;负载均衡调度SLB;动态缓存。本文记录Nginx作为静态资源WEB服务的配置以及示例。

  1、静态资源

  Nginx作为WebServer可以接收客户端的静态资源的请求,然后通过静态资源的存储得到这些文件返回给客户端。常常用在对于静态资源的处理、请求、动静分离等场景。静态资源指非服务器动态运行生成的文件,包括HTML、CSS、JS、JPEG、GIF、PNG、FLV、MPEG、TXT等任意下载文件。

  2、静态资源服务场景-CDN

  请求静态资源常常用到CDN这项技术:北京的用户请求一个文件,假如文件放在了新疆,新疆离北京的距离比较远,直接请求的话延时很长。如果新疆有一个Nginx节点作为资源存储中心,分发给其他省的Nginx节点,北京的用户根据DNS就可以请求距离近的省份的Nginx的静态文件了。以下是简单的CDN架构图:

  

  3、静态资源Web服务配置语法

  Syntax:sendfile on | off;
  Default:sendfile off;
  Context:http,server,location,if in location
  作用:开启sendfile

  Syntax:tcp_nopush on | off;
  Default:tcp_nopush off;
  Context:http,server,location
  作用:sendfile开启的情况下,提高网络包的传输效率,nopush不是立马把包推送给客户端,多个包整合后一次性发送出去。

  Syntax:tcp_nodelay on | off;
  Default:tcp_nodelay on;
  Context:http,server,location
  作用:在keepalive连接下,提高网络包的传输实时性。不等待,实时发送,要求实时性比较高的场景。

  Syntax:gzip on | off;
  Default:gzip off;
  Context:http,server,location,if in location
  作用:压缩传输,服务端压缩,浏览器端解压。

  Syntax:gzip_comp_level level;
  Default:gzip_comp_level 1;
  Context:http,server,location
  作用:控制压缩比

  Syntax:gzip_http_version 1.0|1.1;
  Default:gzip_http_version 1.1;
  Context:http,server,location
  作用:指定gzip的http协议版本

  4、演示压缩与预读功能

  http_gzip_static_module:预读gzip功能。假如读文件的/aaa.txt文件,开启了该功能会优先读/aaa.txt.gz文件

  http_gunzip_module:应用支持gunzip的压缩方式,不支持gip的开启gunzip模块,基本用不到。

  1)准备文件:

  /opt/app/code/images/wei.png;

  /opt/app/code/doc/access.txt(内容多些,方便看效果);

  /opt/app/code/download/test.img;

  2)新建:/etc/nginx/conf.d/static_server.conf

location ~ .*\.(jpg|gif|png)$ {
    root  /opt/app/code/images;
}

location ~ .*\.(txt|xml)$ {
    root  /opt/app/code/doc;
}

location ~ ^/download {
    tcp_nopush on;
    root /opt/app/code;
}

  分别定义了3个访问路径:

  以 jpg、gif、png 结尾的文件访问 /opt/app/code/images;

  以 txt、xml 结尾的访问 /opt/app/code/doc;

  以 download 开头的访问 /opt/app/code;

  

  检查语法并重新加载,测试:http://192.168.7.151/wei.png,图片239KB;http://192.168.7.151/access.txt,文本175KB;

  

  

  cd到目录 /opt/app/code/download,执行压缩命令,现在该目录中只有 test.img.gz

[root@localhost download]# gzip ./test.img

  测试:http://192.168.7.151/download/test.img,找不到文件

  

  现在重新修改 /etc/nginx/conf.d/static_server.conf 文件 

location ~ .*\.(jpg|gif|png)$ {
  gzip on;
  gzip_http_version 1.1;
  gzip_comp_level 2;
  gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
  root  /opt/app/code/images;
}

location ~ .*\.(txt|xml)$ {
  gzip on;
  gzip_http_version 1.1;
  gzip_comp_level 1;
  gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
  root  /opt/app/code/doc;
}

location ~ ^/download {
  gzip_static on;
  tcp_nopush on;
  root /opt/app/code;
}

  

  检查语法并重新加载,测试:http://192.168.7.151/wei.png,图片233KB;http://192.168.7.151/access.txt,文本23.5KB;

  

  

  测试:http://192.168.7.151/download/test.img,能找到文件 

  

 

posted @ 2020-05-06 17:37  雷雨客  阅读(373)  评论(0编辑  收藏  举报