I. 概述

动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。
目前实现动静分离有两种方式,一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;另外一种方法就是动态跟静态文件混合在一起发布,通过nginx来分开。
通过location指定不同的后缀名实现不同的请求转发。通过 expires参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 xpires定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires来缓存),如设置3d,表示在这3天之内访问这个URL,发送个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304;如果有修改,则直接从服务器重新下载,返回状态码200。
1555009-20190709204248360-1956537290.png

II. Nginx配置示例——动静分离

2.1 实现效果

访问静态资源时,nginx转发请求到对应的静态资源服务器,访问动态资源时,nginx将请求转发到动态资源服务器。

2.2 准备工作

在根目录下创建data目录,在data里创建www与image文件夹,分别存放动态资源与静态资源。
新建a.html,其中访问image中的图片文件。

3.3 具体配置

  1. 打开配置文件并配置:

    1. server{
    2. listen 80;
    3. server_name 192.168.1.114;
    4. location /www/{
    5. root /data/;
    6. }
    7. location /image/{
    8. root /data/;
    9. autoindex on; # 列出访问目录
    10. }
    11. }
  2. 重载nginx配置文件

    1. nginx -s reload

    3.4 测试