Nginx (4):nginx动静分离
创始人
2024-02-17 14:52:41
0

什么是动静分离不解释了,网上说的很清楚,这里只说配置

  • 目的
    02虚拟机运行一个tomcat,处理动态请求,而对静态文件的访问则交给01虚拟机。
  • 操作
    下面是01虚拟机的配置文件内容:

server {listen 82;listen [::]:82;#root /var/www/web/index;#index index.html;server_name localhost;location / {proxy_pass http://192.168.xxx.xxx:8080;#try_files $uri $uri/ =404;}location /css {root html;index index.html index.htm;}location /js {root html;index index.html index.htm;}location /img {root html;index index.html index.htm;}
}

首先修改proxy_pass,改为02虚拟机的tomcat地址端口,然后设置location,很好理解,访问css就去html目录下的css目录中查找,js和img同理。

  • 效果
    下面访问02虚拟机的端口,发现静态文件全是从01虚拟机对应的目录下去取的(前提是提前将对应的静态文件放到01虚拟机的相应目录),此时删除02虚拟机对应目录下的文件依然能够在页面上准确返回相应的内容。
  • 原理

反正静态文件是不变的,经过nginx从tomcat去取,取完了返回给nginx,再给用户呈现,还不如直接把静态放到nginx,别经手tomcat,因为tomcat是处理动态请求的服务器。因此就做到了动静分离。

  • 正则匹配

可以看到上面js、css、img每人一个location,有些冗余,这里可以使用正则的方法

server {listen 82;listen [::]:82;#root /var/www/web/index;#index index.html;server_name localhost;location / {proxy_pass http://192.168.xxx.xxx:8080;#try_files $uri $uri/ =404;}location ~*/(js|img|css) {root html;index index.html index.htm;}
}

~表示开始正则。

  • 我自己的项目:
    项目路径是这样的:
    在这里插入图片描述
    views里面存放html,以login.html做示范。
    login.html里面的静态文件路径也不复杂,分别来自上面图片里除了views以外的文件夹,也只是js、img、css这几种静态文件,然后在02虚拟机开启tomcat,并将views放到tomcat的web根目录\demo下,01虚拟机去充当nginx服务器,配置文件我是这么写的:
server {listen 82;listen [::]:82;#root /var/www/web/index;#index index.html;server_name localhost;location / {proxy_pass http://192.168.xxx.xxx:8080/demo/views/login.html;#try_files $uri $uri/ =404;}location ~*/(js|img|css) {root /var/www/web ;index index.html index.htm;}
}

我发现,来自js、css、img这几个文件夹的静态文件确实可以获取到,但是来自layui、assembly等文件夹的静态文件获取不到。。
在这里插入图片描述
于是我修改配置文件:

server {listen 82;listen [::]:82;#root /var/www/web/index;#index index.html;server_name localhost;location / {proxy_pass http://192.168.xxx.xxx:8080/demo/views/login.html;#try_files $uri $uri/ =404;}location ~*/(js|img|css|layui|assembly) {root /var/www/web ;index index.html index.htm;}
}

其实就是匹配规则里添加了这几个文件夹的名字js|img|css|layui|assembly。我之前以为这里的匹配规则匹配的是文件类型,现在才知道,匹配的是路径。。
于是就好了:
在这里插入图片描述

相关内容

热门资讯

原创 戴... 最近,关于前国脚戴琳的欠薪丑闻无疑是引发了球迷的持续关注,从10月25日,媒体人李平康率先爆料,晒出...
思想政治工作条例最新修订内容,... 思想政治工作条例最新修订内容,思想政治工作条例全文下载 思想政治工作条例最新修订,全文下载与深度解读...
CBA潜力赛为何打成“老将赛”... 计时钟归零,双方教练握手致意,观众开始退场,CBA联赛的正赛宣告结束。然而球场并未就此沉寂,替补席上...
“手术钻头断裂遗留患者体内”,... 12月21日,湖南祁阳市卫生健康局发布情况通报称,近日,有媒体报道祁阳市中医医院发生骨科手术钻头断裂...
代驾纠纷 代驾时撞伤行人、车辆发生故障…… 这些都和车主无关,应由代驾赔偿? 观点: 使用代驾服务并非将所有...
公司股东与妻子分居期间出轨女下... 近日据报道,宁夏永宁县人民法院一审查明公司股东李某乙在与妻子李某甲分居期间,与公司女员工马某某存在不...
动物学家、律师和创作者,Thi... 12月21日,以“一起·了不起”为主题的2025 ThinkPad黑FUN礼在京举办。活动现场,律师...
徐奇渊:扩内需与对外政策紧密相... 近日,中国海关总署发布了一组数据令人关注:2025年前11个月,我国货物贸易顺差达到1.08万亿美元...
46岁上海独居女子不幸离世,官... 居住在上海虹口区46岁的蒋女士因突发脑溢血于今年10月入院,远亲吴先生与其公司共同垫付了医药费,但她...