linux 实现nginx 动静分离

linux 动静分离

动静分离介绍


动静分离是指,静态页面与动态页面解耦分离,用不同系统承载对应流量的架构设计方法。

clipboard

动静分离原理

动静分离可通过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 找。

image

image

posted @ 2022-01-08 22:04  JasonBorn  阅读(238)  评论(0编辑  收藏  举报