Nginx (4):nginx动静分离

news2025/7/19 6:32:50

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

  • 目的
    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。我之前以为这里的匹配规则匹配的是文件类型,现在才知道,匹配的是路径。。
于是就好了:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

六、nacos环境隔离、服务配置拉取和多环境配置共享

文章目录一、环境隔离-namespace1.namespace理解2.创建命名空间二、Nacos-实现配置管理三、nacos-实现服务配置拉取1.非热更新2.热更新:四、实现多环境配置共享1.开发环境:2.测试环境3.结论一、环境隔离-namespace 1.namespace理解 Nacos中服务存储和数…

Element Plus 组件库相关技术:7. 组件实现的基本流程及 Icon 组件的实现

前言 本章节我们将要实现 Icon 组件,Icon 组件应该是所有组件里面最简单的一个组件了,所以我们由简入深,循序渐进进行学习。Icon 组件虽然简单,但它却包含了一个组件的全部基础流程,通过实现 Icon 组件进行理解 Eleme…

疫情失业之下,测试的未来在哪里

前天和测试圈子里一个朋友聊了关于今年求职招聘市场行情和个人认知以及发展副业的话题。 聊起了今年的求职招聘行情,他说他们公司已经裁了一波人了,估计年底还会有一波裁员。 今年的市场冷的有点吓人,在这么下去,他也会担心自己…

nacos实现负载均衡、权重

文章目录一、nacos服务分级存储模型二、Nacos-NacosRule 实现负载均衡三、nacos-服务实例的权重设置一、nacos服务分级存储模型 修改 application.yml 配置文件: spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: HZ #集群位置&#xff0c…

Linux C/C++ 学习笔记(九):百万并发的服务器实现

本文内容参考自(2条消息) Linux C/C 开发(学习笔记十三):百万并发的服务器实现_菊头蝙蝠的博客-CSDN博客_linux百万并发 一、connection_refuesed ---->文件系统最大的进程fd个数 nat 模式,物理机的VMnet8网卡,连接到了VMnet…

selenium--关闭窗口,指定窗口大小,前进,后退,刷新等等

关闭窗口跳转到指定页面窗口大小设置返回上个页面前进到下一个页面页面刷新关闭窗口 在selenium中执行完关闭窗口一般有两种方法: driver.close() driver.quit()这两个都是常用的方法,但是他们有什么区别呢? 对于driver.close(),他是关闭当…

【FME实战教程】003:FME读取地理空间数据(矢量、栅格、点云、三维模型、数据库、地理服务)大全

FME读取地理空间数据(矢量、栅格、点云、三维模型、空间数据库、地理服务)大全。 文章目录1. FME读取数据1.1 读取矢量1.1.1 读取Shapefile1.1.2 读取dwg1.2 读取栅格数据1.2.1 影像DOM1.3 读取地理数据库1.3.1 读取文件数据库(.gdb&#xff…

机械原理复习试题

​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) ​ 编辑 添加图片注释,不超过 140 字(可选) ​ 编辑…

聚类分析的基本概念和方法

聚类分析的基本概念和方法 文章目录聚类分析的基本概念和方法前言一、什么是聚类分析1、聚类分析基本流程与步骤2、 什么是好的聚类方法3、聚类的模型评估4、聚类分析的比较5、聚类分析的挑战二、基本聚类方法概述三、划分算法1、基本概念2、k-means 聚类方法1、k-means 方法的…

CMake中configure_file的使用

CMake中的configure_file命令用于将一个文件拷贝到另一个位置并修改其内容&#xff0c;其格式如下&#xff1a; configure_file(<input> <output>[NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS |FILE_PERMISSIONS <permissions>...][COPYONLY] [ESCAPE_…

01 一条SQL 语句是如何执行的?

select * from teacher where id 10 1、一条简单的sql语句底层的执行过程是怎么样的&#xff1f; 答&#xff1a;一条sql执行会经过连接器、查询缓存、分析器、优化器和执行器等步骤。 2、连接器的作用是什么&#xff1f; 答&#xff1a;sql查询&#xff0c;首先连接到这个数…

【机器学习项目实战10例】(四):利用XGBoost实现短期电力负荷预测

💥 项目专栏:【机器学习项目实战10例】 文章目录 一、利用XGBoost实现短期电力负荷预测二、数据集介绍三、将数据进行标准化四、形成训练数据五、划分训练集、测试集六、定义模型七、模型训练八、训练集、测试集验证九、网络搜索十、绘制结果一、利用XGBoost实现短期电力负荷…

分布式事务

一、事务 1.1、什么是事务&#xff1f; 事务&#xff08;transaction&#xff09;是访问并操作数据库中数据的一个程序执行单元&#xff0c;由开始事务和提交事务之间的所有的语句组成。事务的结束有两种&#xff0c;一个是事务中间的所有操作执行成功&#xff0c;提交事务。一…

UE5笔记【九】蓝图BluePrint;

新建一个第三视角游戏。然后打开关卡蓝图。 长得跟材料编辑器一样。 这里是我们创建Node和新功能的地方。 首先我们新建一个游戏开始的地方。右键&#xff1a;Begin搜索。 我们需要打印一行字&#xff1a;欢迎来到游戏世界。我们需要添加一个打印文本的结点&#xff1a;PrintT…

APS自动排产 — 排产结果拉动物料需求计划

一、APS系统生产计划前应该注意哪些 建立好基础资料 标准产能&#xff1a;所有产品的标准产能&#xff0c;来自于工程技术部。如果工程技术部无法提供标准产能&#xff0c;则请生产部门根据实际提供相对准确的标准产能。技术资料&#xff1a;产品的物料清单(BOM)、图纸、工程…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java线上学习系统8e88w

做毕业设计一定要选好题目。毕设想简单&#xff0c;其实很简单。这里给几点建议&#xff1a; 1&#xff1a;首先&#xff0c;学会收集整理&#xff0c;年年专业都一样&#xff0c;岁岁毕业人不同。很多人在做毕业设计的时候&#xff0c;都犯了一个错误&#xff0c;那就是不借鉴…

ArcGIS中ArcMap图层属性表的中文字段乱码的解决方法

本文介绍ArcMap软件打开图层的属性表后&#xff0c;出现字段中汉字乱码情况的解决方法。 有时在使用ArcMap软件时&#xff0c;会发现一些图层的属性表中&#xff0c;原本应该是中文的字段却出现乱码的情况&#xff1b;如下图所示&#xff0c;其中NAME99一栏应该是图层中各个要素…

50-51 - C++对象模型分析

---- 整理自狄泰软件唐佐林老师课程 1. 回归本质 1.1 class是一种特殊的struct 在内存中class依旧可以看作 变量的集合class与struct遵循相同的 内存对齐 规则class中的成员函数与成员变量是 分开存放 的 每个对象有独立的成员变量所有对象共享类中的成员函数 1.2 值得思考…

OpenGL ES 学习(四) -- 正交投影

这里的内容基本参考于 https://www.jianshu.com/p/51a405bc52ed &#xff0c;因为写得很好&#xff0c;也没啥补充的&#xff0c;就当做记录一下。 这里先简单解决变形的问题&#xff0c;关于 OpenGL 更多图形矩阵变换&#xff0c;等后面再详细讲。 一. 归一化设备坐标 在Ope…

forplo | 冲冲冲!这个画森林图的包好flexible哦~

1写在前面 我想大家肯定都用过森林图&#xff0c;应用比较多的场景可能是展示meta分析&#xff0c;回归分析结果的时候。&#x1f973; 画森林图的包还是挺多的&#xff0c;今天介绍一下forplo包的用法。&#x1f618; 2用到的包 rm(list ls())library(tidyverse)library(forp…