Nginx实现动静分离
一、概述
1.1、Nginx动静分离基本概述
动静分离,通过中间件将'动态请求'和'静态请求'进行分离
通过中间件将动态请求和静态'请求分离',可以'节省不必要的请求消耗',同时能'减少请求的延时'。
动静分离是指在web服务器架构中,将'静态页面'与'动态页面'或者说是 '静态内容接口'和'动态内容接口'分开不同系统访问的架构设计方法,进而提升整个服务访问性能和可维护性。
# 动静分离只有好处:
# 动静分离后,即使动态服务不可用,但静态资源不会受到影响
1.2、前后分离
# 接口与视图分开部署,专业的人做专业的事。
例如:前端使用vue.js,后端只需要提供接口即可。前端项目于后端项目都是独立部署的
如果我们静态资源与动态资源存放在同一台服务器上面,当静态资源不断增多的时候,我们的服务器访问是扛不住的,因为静态资源消耗过多的带宽,导致静态资源无法访问或者访问的非常慢。
CDN扩展知识
CDN的全称是Content Delivery Network ,即'内容分发网络'。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置'节点服务器'所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据'网络流量'和各节点的连接、'负载状况'以及到用户的'距离'和响应时间等综合信息将用户的请求'重新导向'离用户'最近'的服务节点上。其目的就是使用户可'就近取得所需内容',解决internet网络拥挤的状况,'提高'用户访问网站的'响应速度'。
在一个网站中,静态资源(js,css,img)是比较占宽带资源的,动态资源占带宽很小。1M带宽=128k/s
所以网站中的静态资源一般都存放在第三方存储平台上,例如:七牛云、阿里云、腾讯云等,这些第三方存储平台内置CDN,进行内容分发,采用就近访问原则。
# CDN内容分发:就是将静态资源服务器部署在全国各个服务器节点上。
静态资源在前端页面直接配置的是静态服务器上面的资源地址,直接走第三方服务器,而不再走我们本地的服务器
二、配置动静分离
2.1、单台机器的动静分离
# vim /etc/nginx/conf.d/www.djfl.com
server {
listen 80;
server www.dkfl.com;
location {
root /mnt/wordpress;
index index.php
}
location ~* \.(jpg|png|gif)$ {
root /mnt/wordpress/wp-content
}
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /mnt/wordpress$fastcgi_script_name;
include fastcgi_params;
}
}
2.2、多台机器的动静分离
2.2.1、环境准备
主机 | 作用 | 服务 | IP |
---|---|---|---|
lb01 | 负载均衡 | nginx | 172.16.1.5 |
web01 | 静态资源 | nginx | 172.16.1.7 |
web02 | 动态资源 | nginx |
172.16.1.8
|