Nginx 动静分离相关配置解析
创始人
2024-03-29 17:20:12
0

Nginx 动静分离相关配置解析

本篇主要介绍nginx 动静分离相关配置解析

image-20221201063248222

概述

动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路.

准备工作

配置2台 虚拟机 并且都安装好nginx 服务,配置信息如下 , 并且在 hosts文件中做好域名配置

ip模拟域名类型
172.16.225.111www.testfront.com静态资源服务器
172.16.225.110www.testbackend.com动态资源服务器

主机电脑 /etc/hosts 文件配置如下

172.16.225.111 www.testfront.com
172.16.225.110 www.testbackend.com

front 相关配置

第一步就简单的把 front 的请求 proxy_pass 到 backend 服务上去

注意需要在 front 的虚拟机中配置 /etc/hosts/ 172.16.225.110 www.testbackend.com 否则启动抛 host not found in upstream "www.testbackend.com"

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  www.testfront.com;location / {#这里使用域名所以需要在front本机上配置 etc/hostsproxy_pass http://www.testbackend.com; }#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

backend 相关配置

backend 不需要配置, 只是在 html/index.html 修改内容 添加一个图片,并且标注了是backend 的 ip

...

Thank you for using nginx 172.16.225.110.

...

非动静分离

非动静分离是指 把静态资源直接放到 后端服务器上

根据上面的配置 当请求访问到 /my.gif 的时候 需要在backend 的 默认html/下要有这个my.gif文件

image-20221201055242113

此时打开 www.testfront.com 和 www.testbackend.com 都会得到如下的界面

image-20221201055252096

动静分离

是指把静态资源 提取出来, 如上把 my.gif 提取到 front机器中,让所有访问静态资源的直接去front中访问

先把 backend机器中的 html/my.gif 静态资源删除了

image-20221201055705068

方式一 正则匹配文件名后缀

以下配置 均在 front 机器上 即 172.16.225.111 上

配置 正则根据文件后缀去匹配 (不区分大小写)注意 正则匹配中 会把 /* 后面所有的路径都拼接到 /www/static/后面

....location ~* .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {root    /www/static;}
....

上面的配置意思是 当访问到 .gif... 等资源的时候 直接去 /www/static 下面寻找 相当于它访问了 /www/static/my.gif ,所以我这里要把my.gif 放入 /www/static下, 此时就能访问到了 并且是要通过 www.testfront.com ,而 www.testbackend.com 是无法访问到的,因为静态资源已经被移动到 front 服务器上了

image-20221201060317043

方式二 前缀匹配 (优先级高于 上面正则)

以下配置 均在 front 机器上 即 172.16.225.111 上

以下位置块中的修饰符 ^~ 会导致区分大小写的正则表达式匹配.

以下 /static/my.gif 会被匹配到

....location ^~ /static/ {root  /www/static;}
....

注意 root 是会把 location 中 /static/ 添加到 /www/static/ 后面 即 如果访问 /static/my.gif 会被匹配到 /www/static/static/my.gif

还有一种是 alias

....location ^~ /static/ {alias  /www/static;}
....

注意 alias 是会忽略 location 中 /static/ 不会添加到 /www/static/ 后面 即 如果访问 /static/my.gif 会被匹配到 /www/static/my.gif

总结

本篇主要介绍了 Nginx 动静分离的配置 主要有两种方式可以

  • ~* .(gif|jpg|jpeg|png|bmp|swf|css|js)$ 正则匹配文件后缀的方式
  • ^~ /static/ 匹配前缀路径的方式 优先级比于上面的正则方式

还有介绍了 root 和 alias的区别

  • root 会把location 路径上的 追加到后面 /www/static/static/my.gif
  • alias 会忽略 location 上匹配的路径 /www/static/my.gif

最后总结一下 location 的匹配优先级

  • 所有类型location存在时,“=”匹配 > “^~”匹配 > 正则匹配 > 普通(最大前缀匹配)

    欢迎大家访问 个人博客 Johnny小屋
    欢迎关注个人公众号

欢迎关注个人公众号

相关内容

热门资讯

中央广电总台副台长王晓真,黑龙... 据央视新闻报道,12月28日,中央广播电视总台《2026年春节联欢晚会》分会场发布。黑龙江哈尔滨、浙...
聚焦全国财政工作会议丨明年财政... (央视财经《经济信息联播》)明年是“十五五”规划的开局之年,财政政策将聚焦哪些关键领域精准发力? ...
原创 中... 12月26日,中国对美国实施了一次重磅反制,针对美国政府前不久批准的111亿美元对台军售,中方决定出...
徐杰11分王少杰遭驱逐 张宁缺... [搜狐体育战报]北京时间12月28日消息,2025-26赛季CBA常规赛继续第7轮角逐。王少杰第三节...
《今日说法》主持人李晓东买茶叶... 12月28日,《今日说法》栏目主持人李晓东发布视频称,此前“被骗1000元买茶叶”事件迎来新进展:该...
3-0领先终于能休息了!莫德里... 在意甲第17轮的一场焦点战中,AC米兰迎战维罗纳。比赛进行到第70分钟时,AC米兰在3-0领先的情况...
原创 数... 星链卫星接连失控坠落背后,美国太空霸权现裂痕?反观中国,悄然布下反超棋局,六战六捷消息一出,美国立马...
“墨色无变化”,故宫出借米芾《... 12月28日,江西省博物馆发布声明回应近日文学爱好者的质疑: 近日,有观众质疑我馆“山谷雅集——黄庭...
原创 彻... 近期,中日关系因为日本首相高市早苗的错误涉台言论,跌到了谷底。然而在多重施压下,高市早苗仍然拒绝撤回...