linux 动静分离
动静分离介绍
动静分离是指,静态页面与动态页面解耦分离,用不同系统承载对应流量的架构设计方法。
动静分离原理
动静分离可通过location对请求url进行匹配,将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。通常将静态资源放到nginx中,动态资源转发到tomcat服务器中。
动态页面,有与之匹配的技术架构,例如:
分层架构
服务化架构
数据库,缓存架构
动态页面,有与之匹配的技术架构,例如:
分层架构
服务化架构
数据库,缓存架构
## 为什么要用动静分离架构:
静态页面访问路径短,访问速度快,几毫秒
动态页面访问路径长,访问速度相对较慢(数据库的访问,网络传输,业务逻辑计算),几十毫秒甚至几百毫秒,对架构扩展性的要求更高
静态页面与动态页面以不同域名区分
实现动静分离
准备工作:
准备三台服务端 : web01 web02 web03
准备一台代理服务器 :lb01
准备资源共享服务端 :nfs
具体步骤:
1、创建nfs挂载点(nfs)
[root@nfs ~]# mkdir /static
[root@nfs ~]# vim /etc/exports (创建挂载点)
/static 172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)
[root@nfs ~]# systemctl restart nfs-server (重启nfs服务)
[root@nfs ~]# chown -R www.www /static/ (授权)
2、将静态资源放置于挂载点内(web01)
[root@web01 ~]# mkdir /opt/static/s
[root@web01 ~]# cp -r /opt/bbs/static/* /opt/static/s (将静态文件cp到挂载点内)
[root@web01 ~]# mount -t nfs 172.16.1.31:/static /opt/static/ (将静态文件挂载到nfs,这样nfs就直接下载了web01中的静态文件)
3、挂载到nfs实现共享(lb01)
[root@lb01 ~]# yum install nfs-utils -y (代理服务操作)
[root@lb01 ~]# mount -t nfs 172.16.1.31:/static /opt/static/ (同样将代理端挂载到nfs共享,这样就可以拿到之前web01挂载的静态文件)
(这里取消web01的挂载也可以 因为nfs已经有了静态文件,只需要将lb01代理服务端挂载即可。)
# 编辑lb01 nginx配置文件
[root@lb01 ~]# vim /etc/nginx/conf.d/py.conf
upstream bbs { # 配置连接池
server 172.16.1.7:80 max_fails=3 fail_timeout=3s;
server 172.16.1.8:80 max_fails=3 fail_timeout=3s;
server 172.16.1.9:80 max_fails=3 fail_timeout=3s;
}
server {
listen 80;
server_name py.test.com;
location / {
proxy_pass http://bbs; # 代理连接池 实现负载均衡
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_404;
include /etc/nginx/proxy_params; # 载入优化配置文件
}
location ~ \.(jpg|png|css|gif|js|json|woff|woff2)$ {
root /opt/static; # 这里会优先匹配/opt/static路径下正则匹配到的文件
}
}
4、测试:这样就直接访问代理服务端lb01 静态文件就会直接在代理服务端找反馈给用户。动态文件再去后端服务器 web01 web02 web03 找。