12. Nginx动静分离

通常来讲,静态资源是指JavaScript、CSS、Img等文件,动态资源则是经过PHP、Java等后端语言运行一系列的代码逻辑来获取的。php

若是是静态资源的请求,就直接让nginx在静态资源目录下面读取,而后返回给客户端css

若是是动态资源的请求,则nginx利用反向代理把请求转发给后端应用去处理,而后后端应用将结果返回给nginx,nginx再返回给客户端html

在使用先后端分离以后,能够很大程度的提高静态资源的访问速度,同时减轻后端应用的处理压力。拿PHP之Laravel框架来讲,简单的获取一个静态文件,就须要初始化框架代码,这个过程也比较耗时,性价比是很低的nginx

# 动态内容 
location ~ \.php$ {
    root          html;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
}

# 静态内容
location ~ \.(png|jpeg|jpg|js|css|woff|ttf)$ {
    expires 1h;
}

固然,若是有条件的话,仍是建议将静态资源存放到七牛或阿里云OSS中,利用CDN能够获取更快的静态资源加载速度segmentfault

专题阅读