Nginx实现动静分离

一、概述

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_serverproxy_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.mzph.cn/news/94386.shtml

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

相关文章

基于C++ Qt的积分抽奖系统源码,实现了用户注册、商品购买、积分抽奖等功能

基本介绍 完整代码下载:基于C Qt的积分抽奖系统 这个是我大二上学期的课程作业仓库, 目的是实现一个超市积分抽奖系统, 基本的功能是实现一个能够在超市购物的同时进行抽奖的积分系统, 主要用到的技术栈就是Qt和c, 叠…

火山引擎 ByteHouse 与白鲸开源完成兼容性认证,加速数据价值释放

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 数据作为新型生产要素,已快速融入生产、分配、流通、消费和社会服务管理等各环节,深刻改变着生产方式、生活方式和治理方式。越来越多企业也…

Hive【Hive(五)函数-高级聚合函数、炸裂函数】

高级聚合函数 多进一出(多行输入,一个输出) 普通聚合函数:count、sum ... 1)collect_list():收集并形成 list 集合,结果不去重 select sex,collect_list(job) from e…

JAVA学习(3)-全网最详细~

回顾 昨天学了 Java 中的数据类型-整型 int - integer,以及什么是标识符identifier和它的命名规则,什么是保留字(reserved word key word),最后还谈到了Java变量包括局部变量和成员变量(在类内部,方法外部的变量),变量必须要初始化,否则会报错.如果有遗忘或者是感兴趣的小伙伴…

Python PEP8 代码规范常见问题及解决方案

Win11查看安装的Python路径及安装的库 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python PEP8 代码规范常见问题及解决方案 Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 anac…

ESLint自动修复代码规范错误

基于 vscode 插件 ESLint 高亮错误,并通过配置 自动 帮助我们修复错误 在设置中 settings.json添加这段代码就自动修复错误 // 当保存的时候,eslint自动帮我们修复错误 "editor.codeActionsOnSave": { "source.fixAll": true }, /…

Ubuntu安装samba服务器

为了window系统下能够像访问本地目录一样访问ubuntu系统下的目录,这里我通过安装samba服务器,将ubuntu系统的文件目录通过网络挂载的方式共享出来,以便在window下就能够对ubuntu系统的文件进行读写等访问操作,这里记录一下samba服…

HTTP的请求方法,空行,body,介绍请求报头的内部以及粘包问题

目录 一、GET与POST简介 二、空行和body 三、初识请求报头以及粘包问题 四、认识请求报头剩余部分 一、GET与POST简介 GET https://www.sogou.com/HTTP/1.1 请求报文中的方法,是最常规的方法(获取资源) POST:传输实体主体的方法…

插入排序:简单而有效的排序方法

在计算机科学中,排序算法是一个重要且常见的主题,它们用于对数据进行有序排列。插入排序(Insertion Sort)是其中一个简单但有效的排序算法。本文将详细解释插入排序的原理和步骤,并提供Java语言的实现示例。 插入排序的…

systrace/perfetto抓取方式分享

背景 近来有一些同学反馈性能分析,现在大部分都是其实已经开始使用perfetto了,连sdk上都已经找不到哦systrace相关工具,让马哥可以分享一些这个相关内容,其实以前企业里面那时候大部分都是使用老版本systrace的,相比新…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验

课程1_第2周_测验题 目录:目录 第一题 1.神经元计算什么? A. 【  】神经元计算激活函数后,再计算线性函数(zWxb) B. 【  】神经元计算一个线性函数(zWxb),然后接一个激活函数…

【C语言进阶(11)】动态内存管理

文章目录 Ⅰ 存在动态内存分配的原因Ⅱ 动态内存函数1. malloc2. calloc3. realloc4. free (重要) Ⅲ 常见动态内存错误1. 对 NULL 指针的解引用操作2. 对动态开辟空间的越界访问3. 对非动态开辟内存使用 free 释放4. 使用 free 释放一块动态开辟内存的一部分5. 对同一块动态内…

《深度不确定条件下的决策:从理论到实践》PDF

制定未来计划时需要预测变化,尤其是制定长期计划或针对罕见事件的计划时。当这些变化存在高度不确定性的时候,这种预期就变得越来越困难。 今天给大家介绍的这本《深度不确定条件下的决策:从理论到实践》正是解决以上问题的良方。完整书籍文…

数据结构与算法-顺序表

数据结构与算法 🎈1.线性表🔎1.1基本操作🔎1.2线性表的存储结构 🎈2.线性表的顺序表示和实现🔎2.1线性表的顺序存储表示🔭2.1.1静态顺序表🔭2.1.2动态顺序表 🔎2.2顺序表基本操作的实…

安卓:解决AndroidStudio导出Unity的Apk(APP)出现2个显示图标

用AndroidStudio打开该项目 实现只保留1个app图标 AndroidManifest.xml的改法如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android" package"com.fru…

【开发篇】十四、SpringBoot整合Quartz实现定时任务

文章目录 1、关于定时任务2、Java原生实现3、相关名词4、SpringBoot整合Quartz5、Quartz的通用配置6、关于QuartzJobBean7、关于调度器Scheduler的绑定8、Quartz持久化 1、关于定时任务 定时任务在实际开发中使用场景很多&#xff0c;比如&#xff1a; 年度报告各种统计报告某…

【小程序 - 加强】自定义组件、使用npm包、全局数据共享、分包_05

目录 一、自定义组件 1. 组件的创建与引用 1.1 创建组件 1.2 引用组件 1.2.1 局部引用组件 1.2.2 全局引用组件 1.2.3 全局引用 VS 局部引用 1.2.4 组件和页面的区别 2. 样式 2.1 组件样式隔离 2.2 组件样式隔离的注意点 2.3 修改组件的样式隔离选项 2.4 styleIso…

C++(List)

本节目标&#xff1a; 1.list介绍及使用 2.list深度剖析及模拟实现 3.list和vector对比 1.list介绍及使用 1.1list介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;…

内网综合扫描工具-fscan的安装和使用

简介 一款内网综合扫描工具&#xff0c;方便一键自动化、全方位漏扫扫描。 支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别等功能。相当强大&#xff01;&…

国庆10.04

服务器 代码 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器头文件 #include<QTcpSocket> //客户端头文件 #include<QList> //链表容器 #include<QMessag…