一、CDN

1、定义:

内容分发的逻辑网络。

2、作用:

CDN能做到传输延时的最小化。

CDN请求示意图如下:

二、静态资源需要配置的一些语法模块。

1、配置语法 - 文件读取

Syntax : sendfile on | off;
Default : sendfile off;
Context : http,server,location,if in location

当然现在随着Nginx和Linux的版本不断更新,已经出现了异步文件读取的模块:--with-file-aio模块。

2、tcp_nopush

配置语法

Syntax : tcp_nopush on | off;
Default : tcp_nopush off;
Context : server,location;

作用:

sendfile开启的情况下,提高网络包的传输效率。(不是很着急的将包推送给客户端,就像是发送快递一样,来了一个包裹不着急送出去,攒一攒,等有了10个包裹后,找一个快递员一次性就送出去,这样是不是就提高了送的效率呀?)

场景:

在大文件传输的时候,推荐打开。

3、tcp_nodelay

配置语法

Syntax : tcp_nodelay on | off;
Default : tcp_nodelay on;
Context : server,location;

nodelay和nopush是相对应的配置语法。

作用:

必须是在 keeplive (长连接)下,才能提到提高网络包的传输实时性的作用。

场景:

要求实时性比较高的场景。

三、压缩相关(也是静态资源配置)

1、gzip

配置语法

Syntax : gzip on | off;
Default : gzip off;
Context : server,location,if in location;

作用:

压缩传输。

服务端进行压缩,浏览器进行解压。

压缩和解压能减少网络传输带宽的消耗,既可以减少服务端的带宽资源,也可以减小文件传输的大小,从而实现传输的实时性。

2、压缩比例

配置语法

Syntax : gzip_comp_level level;
Default : gzip_comp_level ; //压缩比率越高,文件越小,但是也越耗服务器性能。
Context : server,location;

3、压缩HTTP协议的版本。

配置语法

Syntax : gzip_http_version 1.0 | 1.1;
Default : gzip_http_version 1.1;
Context : http,server,location;

4、拓展Nginx压缩模块

a、http_gzip_staic_module - 预读gzip功能。

html.gz是gzip的预压缩文件,如果有的话,就把这个1.html.gzip返回给用户。这对硬盘的要求比较高。

b.http_gunzip_module -应用支持 gunzip的压缩方式。为了支持很少一部分浏览器无法支持gzip压缩和解压功能而需要用到的。

四、压缩先关示例

1、对传输图片的压缩

配置

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

访问  http://192.168.0.133/qq.jpg

当然这里需要自行上传图片到自己服务器的指定目录。

注:当文件超过1M后,压缩个几kb,在浏览器上面不容易看出来,可以只传个几百kb的图片,更容易观察。

2、对传输文件的压缩

配置

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

然后访问 http://192.168.0.133/access.txt

这里可以将 access.log 复制过来改个名字。

3、下载预压缩文件

配置

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

然后将 qq.jpg先进行一个预压缩。

如果没配置  gzip_static on;的话,服务器会报 404的错误。

开启 gzip功能后再次访问该地址,就可以正常下载该文件了。

本文为袋鼠学习中的总结,如有转载请注明出处:https://www.cnblogs.com/chrdai/protected/p/11335015.html

Nginx作为静态资源web服务的更多相关文章

  1. Nginx之静态资源WEB服务

    本篇主要记录学习Nginx的静态资源WEB服务的几种常见的功能记录学习 Nginx开发常用的命令 nginx -tc /etc/nginx/nginx.conf vim /etc/nginx/conf ...

  2. nginx 作为静态资源web服务

    Nginx作为静态资源web服务 静态资源web服务-CDN场景 Nginx资源存储中心会把静态资源分发给“北京Nginx”,“湖南Nginx”,“山东Nginx”. 然后北京User发送静态资源请求 ...

  3. Nginx作为静态资源web服务之防盗链

    Nginx作为静态资源web服务之防盗链 首先,为什么需要防盗链,因为有些资源存在竞争对手的关系,比如淘宝的商品图片,不会轻易的让工具来爬虫爬走收集.但是如果使用防盗链,需要知道上一个访问的资源,然后 ...

  4. Nginx作为静态资源web服务之跨域访问

    Nginx作为静态资源web服务之跨域访问 首先了解一下什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制. 所谓同源是指,域名,协议,端口均相 ...

  5. Nginx作为静态资源web服务之文件读取

    Nginx作为静态资源web服务之文件读取 文件读取会使用到以下几个配置 1. sendfile 使用nginx作为静态资源服务时,通过配置sendfile可以有效提高文件读取效率,设置为on表示启动 ...

  6. Nginx作为静态资源web服务之缓存原理

    Nginx作为静态资源web服务之缓存原理 大致理一下http浏览器缓存原理: 浏览器第一次请求服务器,此时浏览器肯定没有缓存,则直接调用服务器端,服务器在返回的信息的信息头中添加 ETag和Last ...

  7. 记录Nginx作为静态资源web服务场景配置

    server { listen   80; server_name    localhost; sendfile    on; access_log    /var/log/nginx/host.ac ...

  8. Nginx实践篇(2)- Nginx作为静态资源web服务 - 控制浏览器缓存、防盗链

    一.控制浏览器缓存 1. 浏览器缓存简介 浏览器缓存遵循HTTP协议定义的缓存机制(如:Expires;Cache-control等). 当浏览器无缓存时,请求响应流程 当浏览器有缓存时,请求响应流程 ...

  9. Nginx作为静态资源web服务-跨站访问

    一.跨域访问 1.什么是跨域? 参看我的另一篇博客(https://www.cnblogs.com/chrdai/p/11280895.html) 2.为什么浏览器禁止跨域访问? 不安全,容易出现CS ...

随机推荐

  1. 2.vi 和 vim 编辑器

    Linux系统的命令行下的文本编辑器 三种模式 一般模式:打开文档的默认模式 编辑模式 可以进行编辑,要按下  i  a  o  r 等字母后才能从一般模式进入编辑模式 按下ESC 退出编辑模式 命令 ...

  2. 【玩转SpringBoot】通过事件机制参与SpringBoot应用的启动过程

    生命周期和事件监听 一个应用的启动过程和关闭过程是归属到“生命周期”这个概念的范畴. 典型的设计是在启动和关闭过程中会触发一系列的“事件”,我们只要监听这些事件,就能参与到这个过程中来. 要想监听事件 ...

  3. 【Day2】1.循环结构

     视频地址(全部) https://edu.csdn.net/course/detail/26057 课件地址(全部) https://download.csdn.net/download/gentl ...

  4. yocto 项目编译

    1. 编译整个项目 构建编译环境: ~/fsl_6dl_release$ MACHINE=imx6dlsabresd source fsl-setup-release.sh -b build-wayl ...

  5. Java SE 核心 I

    Java SE 核心 I 1.Object类 在 Java 继承体系中,java.lang.Object 类位于顶端(是所有对象的直接或间接父类).如果一个类没有写 extends 关键字声明其父类, ...

  6. C++第三次作业--作用域

    作用域 任何一种语言最基本的部分就是变量,而变量有两个非常重要的特性,作用域和生存期. 定义 作用域是变量的一个属性,某个变量在代码中有效的区域为该变量的作用域. 函数原型作用域 函数声明参数从参数声 ...

  7. Diagonal Walking v.2 CodeForces - 1036B (思维,贪心)

    Diagonal Walking v.2 CodeForces - 1036B Mikhail walks on a Cartesian plane. He starts at the point ( ...

  8. Almost Regular Bracket Sequence CodeForces - 1095E (线段树,单点更新,区间查询维护括号序列)

    Almost Regular Bracket Sequence CodeForces - 1095E You are given a bracket sequence ss consisting of ...

  9. 本地文件上传到gitlab

    1.本地创建目录gbdt_model 2.进入文件目录,在文件中点击鼠标右键选择bash控制台进入 3.运行git init 命令,文件中会多出一个.git 命令 4. git commit -m & ...

  10. css全部理解

    如何设置标签样式 给标签设置长宽 只有块儿级标签才可以设置长宽 行内标签设置了没有任何作用(仅仅只取决于内部文本值) 字体颜色 color后面可以跟多种颜色数据 颜色英文 red #06a0de 直接 ...