Nginx实现动静分离

news2024/9/22 7:36:58

一、概述

1、什么是动静分离

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

动静分离简单的概括是:动态文件与静态文件的分离。

2、Nginx实现动静分离

Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上来说,应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。

动静分离从目的实现的角度,大致分为两类:

  • 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,这种是目前主流推崇的方案之一。
  • 一种是将动态资源和静态资源混合在一起发布,通过 Nginx 来调度分开。

Nginx实现动静分离通过 location参数设置对请求url进行匹配即可。

二、Nginx实现动静分离

静态资源和 Nginx服务放在一个服务器中。

1、准备工作

这里准备两台tomcat服务器,一台服务器为静态资源访问,另一台服务器为动态资源访问。

在静态资源服务器创建 目录,存放一些文件。

#启动tomcat8080:
/usr/local/tomcat8080/bin/startup.sh
#关闭tomcat8080:
/usr/local/tomcat8080/bin/shutdown.sh

在这里插入图片描述

2、实例

第一步:修改Nginx的配置文件

vi /usr/local/nginx/conf/nginx.conf

http {
 
    # upstream模块:自定义服务组名
    upstream my_tomcat_server{
         server 192.168.xxx.x10:8080;
    }

  server {
        listen       80;
        #server_name  localhost;
        server_name  192.168.xxx.xxx;

        charset utf-8;


        # 静态资源访问
        location /static/ {
            alias       /usr/local/mystatic/;
            # autoindex作用为展示目录
            autoindex   on;
        }

				# 动态资源访问
        location /dy/ {
                root   html;
                index  index.html index.htm;

                # proxy_pass:代理转发,指定我们配置负载均衡的服务名my_tomcat_server
                proxy_pass http://my_tomcat_server/;
                # 增加下面内容
                proxy_set_header        Host                    $host;
                proxy_set_header        X-Real-IP               $remote_addr;
                proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;

        }

}

静态资源的匹配URL规则自定义,比如:

#匹配到http://ip/*.jpg或者*.gif或者*.png或者*.css时,交由静态资源服务器处理
location ~ .*\.(jpg|gif|png|css) {
	...
}

第二步:重启Nginx

修改 nginx完之后,保存退出,重启Nginx。

# 先执行停止命令再执行启动命令
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx -s quit
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx

第三步: 浏览器访问

nginx访问静态资源服务器:

添加 charset utf-8; 解决中文名乱码问题。

在这里插入图片描述
nginx访问动态资源服务器:

在这里插入图片描述

– 求知若饥,虚心若愚。

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

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

相关文章

【ldt_struct结构体的利用】RWCTF2023-Digging-into-kernel-3

ldt_struct 结构体 对于该结构体知识请自行谷歌学习,这里仅仅讲利用 ldt 即局部段描述符表(Local Descriptor Table)该结构体如下,结构体的大小为 0x10: /** ldt_structs can be allocated, used, and freed, but t…

【算法导论】中位数和顺序统计量

目录 1. 最小值和最大值1.1 寻找最大值或最小值1.2 同时寻找最大值与最小值 2. 期望为线性时间的选择算法2.1 解决的问题2.2 解决的办法2.3 伪代码2.4 RANDOMIZED-SELECT函数运行过程2.5 算法时间复杂度的分析2.5.1 最坏运行时间2.5.2 期望运行时间 3. 最坏为线性时间的选择算法…

斐波那契模型系列【动态规划】

动态规划步骤 1、状态表示 是什么:dp表(可能是一维或二维数组)里的值所表示的含义。 怎么来: 1、题目要求 2、经验题目要求 3、发现重复子问题 2、状态转移方程 dp[i]... 3、初始化 保证填表不越界 4、填表顺序 5、返回值 写代码时…

基于j2ee的交通管理信息系统/交通管理系统

摘 要 随着当今社会的发展,时代的进步,各行各业也在发生着变化,比如交通管理这一方面,利用网络已经逐步进入人们的生活。传统的交通管理,都是工作人员线下手工统计,这种传统方式局限性比较大且花费较多。计…

IDEA踩坑记录:查找用法 找到的不全怎么办

在我跟CC1链的时候,对InvokerTransformer类的transform()方法进行右键查找用法时,本来应该找到org.apache.commons.collections.map包中的TransformedMap类调用了此方法,但是结果确是没找到。 解决办法: 点击右上方的Maven选项&a…

数据结构 2.1 线性表的定义和基本操作

数据结构三要素——逻辑结构、数据的运算、存储结构(物理结构) 线性表的逻辑结构 线性表是具有相同数据类型的n(n>0)个数据元素的有限序列,其中n为表长,当n0时,线性表是一个空表。 每个数…

【Vue】Vue快速入门、Vue常用指令、Vue的生命周期

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Vue 一、 Vue快速入门二、Vue常用指令2.1 v…

python机器学习基础教程02-鸢尾花分类

初识数据 from sklearn.datasets import load_irisif __name__ __main__:iris_dataset load_iris()print("数据集的键为:\n{}".format(iris_dataset.keys()))# DESCR 数据集的简要说明print(iris_dataset[DESCR][:193])# target_names 数组对应的是我们要预测的花…

导出视频里的字幕

导出视频里的字幕 如何利用剪映快速提取并导出视频里的字幕 https://jingyan.baidu.com/article/c35dbcb0881b6fc817fcbcd2.html 如何快速提取视频中的字幕?给大家介绍一种简单高效又免费的提取方法。需要利用到“剪映”,以下是具体的操作步骤和指引&a…

小团队内部资料共享协作:有效实施策略与方法

在高效率的办公节奏下,传统的文件共享方式无法匹配许多团队的需求,并且在现实使用过程中往往存在许多问题,如版本混乱、权限管理困难等。那么小团队的内部资料共享协作应该怎么做呢? 小型团队可以借助专业的协作工具实现高效内部…

十天学完基础数据结构-第五天(栈(Stack)和队列(Queue))

栈的定义和特点 栈是一种线性数据结构,它遵循后进先出(LIFO)原则。栈具有以下基本概念和特点: 栈顶:栈的顶部元素,是唯一可访问的元素。 入栈:将元素添加到栈顶。 出栈:从栈顶移除…

(c语言)经典bug

#include<stdio.h> //经典bug int main() { int i 0; int arr[10] {1,2,3,4,5,6,7,8,9,10}; for (i 0; i < 12; i) //越界访问 { arr[i] 0; printf("hehe\n"); } return 0; } 注&#xff1a;输出结果为死循…

【LeetCode热题100】--34.在排序数组中查找元素的第一个和最后一个位置

34.在排序数组中查找元素的第一个和最后一个位置 二分查找中&#xff0c;寻找 leftIdx 即为在数组中寻找第一个大于等于 target 的下标&#xff0c;寻找 rightIdx 即为在数组中寻找第一个大于 target 的下标&#xff0c;然后将下标减一。进行两次查找 class Solution {public …

AlexNet网络复现

1. 引言 在现代计算机视觉领域&#xff0c;深度学习已经成为了一个核心技术&#xff0c;其影响力远超过了传统的图像处理方法。但深度学习&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;在计算机视觉的主导地位并不是从一开始就有的。在2012年之前&#xff0c;计…

二、互联网技术——网络协议

文章目录 一、OSI与TCP/IP参考模型二、TCP/IP参考模型各层功能三、TCP/IP参考模型与对应协议四、常用协议与功能五、常用协议端口 一、OSI与TCP/IP参考模型 二、TCP/IP参考模型各层功能 三、TCP/IP参考模型与对应协议 例题&#xff1a;TCP/IP模型包含四个层次&#xff0c;由上至…

正点原子嵌入式linux驱动开发——U-boot使用

在学会U-boot的移植以及其启动过程之前&#xff0c;先体验一下U-boot会更有助于学习的认知。STM32MP157开发板光盘资料里面已经提供了一个正点原子团队已经移植好的U-Boot&#xff0c;本章我们就直接编译这个移植好的U-Boot&#xff0c;然后烧写到EMMC里面启动&#xff0c;启动…

华为云云耀云服务器L实例评测|部署在线影音媒体系统 Jellyfin

华为云云耀云服务器L实例评测&#xff5c;部署在线影音媒体系统 Jellyfin 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品规格1.3 应用场景1.4 支持镜像 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Jellyfin3.1 Jellyfin 介绍3.2 Docke…

VD6283TX环境光传感器驱动开发(4)----移植闪烁频率代码

VD6283TX环境光传感器驱动开发----4.移植闪烁频率代码 闪烁定义视频教学样品申请源码下载开发板设置开发板选择IIC配置串口配置开启X-CUBE-ALS软件包时钟树配置ADC使用定时器触发采样KEIL配置FFT代码配置app_x-cube-als.c需要添加函数 闪烁定义 光学闪烁被定义为人造光源的脉动…

全志ARM926 Melis2.0系统的开发指引③

全志ARM926 Melis2.0系统的开发指引③ 编写目的6. 存储系统简介6.1.概要描述6.2.文件系统接口6.2.1. 文件系统支持6.2.2. 文件系统接口函数 6.3. Flash 分区6.3.1.如何配置可配分区的大小 6.4.存储介质开发6.4.1. NOR Flash6.4.1.1.添加新 Nor Flash6.4.1.2.Nor Flash 保存用户…

Llama2-Chinese项目:6-模型评测

测试问题筛选自AtomBulb[1]&#xff0c;共95个测试问题&#xff0c;包含&#xff1a;通用知识、语言理解、创作能力、逻辑推理、代码编程、工作技能、使用工具、人格特征八个大的类别。 1.测试中的Prompt   例如对于问题"列出5种可以改善睡眠质量的方法"&#xff…