nginx使用详解--动静分离

什么是动静分离?

为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源,如图片、js、css等文件,可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以直接处理,而不用将请求转发给后端服务器。对于用户请求的动态文件,如servlet、jsp,则转发给Tomcat,Jboss服务器处理,这就是动静分离。即动态文件与静态文件的分离。

动静分离可通过location对请求url进行匹配,将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。通常将静态资源放到nginx中,动态资源转发到tomcat服务器中。
在这里插入图片描述

静态页面

静态页面:是一个页面对应一个内容,也就是一对一的关系,在互联网架构中,页面几乎为不变的或者是页面发生变化频率较低的。比如:html 页面,js/css 样式文件等;
与其匹配的技术架构来加速。比如:Squid、Nginx、CDN,而静态页面最大的优点:速度快、跨平台、跨服务器。
无论如何访问都只是让服务器传数据给请求端,并不做脚本计算及读取后台数据库,提高访问速度及降低了部分安全隐患。
采用静态页面的方法:可将数据库及后台系统与前台进行划分,两者间没有绝对的联系,从而提高站点安全。
静态页面的特点

每个网页都有一个固定的 URL,且网页URL以.htm、.html、.shtml等常见形式为后缀,而不含有 ?;
网页内容发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都将保存在网站服务器上,也就是说,保存在服务器上的文件,每个网页都是一个独立的文件;
内容相对稳定,容易被搜索引擎所检索; 没数据库的支持,网站制作和维护方面工作量大,当网站信息量很大时,完全依靠静态网页制作方式较困难;
交互性较差,功能方面有较大的限制; 运行数据快;

在这里插入图片描述

动态页面

动态页面:是一对多访问,通过一个页面可以根据若干参数返回其不同的数据,在互联网架构中,不同的用户访问不同的动态场景页面请求,都可能是不一样的页面。比如:淘宝京东商品列表页面、百度搜索引擎结果页面等;
动态页面,与其之匹配的技术架构,比如:分层架构、服务化架构、数据库、缓存架构;
动态页面的特点
在这里插入图片描述

以数据库技术为基础,可大大降低网站维护的工作量;
采用动态网页技术的网站可以实现更多的功能;
不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页;
在进行搜索引擎推广时需做一定的技术处理才能够适应搜索引擎的要求;

怎么实现动静分离

动静分离是指:静态页面与动态页面分开不同系统访问的架构设计方法。
静态页面:访问路径短,速度快,几毫秒;
动态页面:访问路径长,速度慢,几十毫秒甚至几百毫秒,架构扩展性要求高;

实现方式主要有两种,一种 是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案。另外一种方法就是动态跟静态文件混合在一起发布, 通过 Nginx 配置来分开 分别解释这两种方式:

1)独立域名方式

这种方式是将静态文件独立成单独的域名,并将其放置在独立的服务器上:

静态文件:您可以将静态文件(例如HTML、CSS、JavaScript和图像文件)存放在一个独立的域名下,例如static.yourdomain.com。
独立服务器:您可以将这个静态文件域名指向一个专用的静态文件服务器。这个服务器的配置和优化可以专门用于提供静态文件,例如启用缓存和压缩等。
动态请求:动态请求(例如API请求、数据库查询等)仍然由主域名处理,并被转发给后端服务器进行处理。

2)Nginx配置方式

这种方式是将动态和静态文件混合在一起发布,并通过Nginx的配置来区分和处理它们。以下是对该方式的详细解释:

Nginx配置:使用Nginx的配置文件来定义静态文件和动态请求的处理规则。通过使用location块和相关指令,您可以将静态文件和动态请求分别指定给不同的处理方式。
静态文件:在Nginx的配置中,使用root或alias指令指定静态文件的路径。这样,Nginx会直接从文件系统中提供静态文件的内容,而不需要将请求转发给后端服务器。
动态请求:对于动态请求,使用proxy_pass指令将请求转发给后端的应用服务器。这样,Nginx充当了反向代理的角色,将请求转发给后端服务器进行处理和生成动态内容。
在这里插入图片描述

动静分离实操案例

文件路径实现动静分离

1.在Nginx服务器环境下,准备静态资源,用于访问,在根目录下创建data目录,并在该目录里面创建两个文件夹image、www,在image文件夹里上传一张本地图片,www文件夹里创建一个html文件

# cd /data/
# ll
总用量 8
drwxr-xr-x. 2 root root 4096 3月  29 19:14 image
drwxr-xr-x. 2 root root 4096 3月  29 19:13 www# cd image/
# ls
游戏.jpg# cd ../www/
# ls
20200331.html
# cat 20200331.html 
<h1>This is a static page!</h1>

2、 修改nginx.conf配置文件
添加监听端口、访问名字、重点添加location。

# vim /usr/local/nginx/conf/nginx.conf39     server {40         listen       80;41         server_name  192.168.1.10;42 43         #charset koi8-r;44 45         #access_log  logs/host.access.log  main;46 47         location /www/ {48         #    proxy_pass http://myserver;49             root   /data/;50             index  index.html index.htm;51         }52         location /image/ {53             root /data/;54             autoindex  on;55         }

3、 重启Nginx服务

nginx -s reload

4、 验证效果
在客户端浏览器中输入:http://192.168.1.10/image/和http://192.168.1.10/www/20200331.html分别进行测试动静分离是否成功,删除后端tomcat服务器上的某个静态文件,查看是否能访问,如果可以访问说明静态资源Nginx直接返回了,无须在通过后端Tomcat服务器;

文件后缀实现动静分离

配置image、js、css等资源文件的路径和地址,然后设置缓存失效的时间

worker_processes  1;events {worker_connections  1024;
}http {server {listen       80;server_name  localhost;#拦截后台请求location / {proxy_pass http://localhost:81;proxy_set_header X-Real-IP $remote_addr;}#拦截静态资源location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {root static;expires      30d;  }}}

参考链接:
https://juejin.cn/post/6969704204285771807
https://www.cnblogs.com/itzgr/p/13335271.html#_label1

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

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

相关文章

如何选择激活函数?

选择神经网络的激活函数是一个重要的决策&#xff0c;因为激活函数的选择会影响到网络的收敛速度以及能否有效地训练。不同的激活函数适用于不同的任务和网络架构。以下是选择激活函数时可以考虑的一些指导原则和常用的激活函数&#xff1a; 指导原则 问题类型&#xff1a; 二…

LLM小记

RAG 参考 检索增强生成(RAG)概念及优化 主流模型 llama系列 1. 背景&#xff1a;模型参数量级的积累&#xff0c;或者训练数据的增加&#xff0c;哪个对性能提升帮助更大&#xff1f; 最近的 “Training Compute-Optimal Large Language Models” 这篇论文提出一种缩放定…

Java:PDF图片抽取的两种方法

图片和PDF是我们日常生活和工作中经常接触到的文档格式。PDF是人们日常使用最多的跨平台文档&#xff0c;是一种用独立于应用程序、硬件、操作系统的方式呈现文档的文件格式。每个PDF文件包含固定布局的平面文档的完整描述&#xff0c;包括文本、字形、图形及其他需要显示的信息…

如何利用HubSpot海外获客系统实现海外市场扩张?

在当今全球化的时代&#xff0c;企业面临着越来越激烈的竞争&#xff0c;而海外市场则被视为获取更多增长机会的重要途径之一。针对这一挑战&#xff0c;企业需要建立一个完整的海外获客系统&#xff0c;而HubSpot软件的应用则成为了关键。作为HubSpot的合作伙伴&#xff0c;我…

librtmp源码分析

阅读了librtmp的源码&#xff0c;简单记录下。 首先补充下AMF格式基本知识 1 AMF格式 AMF是Action Message Format(动作消息格式)的简写&#xff0c;它是一种二进制的数据格式。它的设计是为了把actionscript里面的数据(包括Object, Array, Boolean, Number等)序列化成二进制…

jvm 基础知识和jvm 调优

类装载分为以下 5 个步骤&#xff1a; 加载&#xff1a;根据查找路径找到相应的 class 文件然后导入&#xff1b; 检查&#xff1a;检查加载的 class 文件的正确性&#xff1b; 准备&#xff1a;给类中的静态变量分配内存空间&#xff1b; 解析&#xff1a;虚拟机将常量池中的符…

C# 异步返回类型详解

在现代软件开发中&#xff0c;异步编程已经成为一种重要的编程范式&#xff0c;尤其是在需要与I/O密集型操作交互的上下文中&#xff0c;比如网络请求、数据库操作等。C# 语言提供了强大的异步支持&#xff0c;使得异步编程变得更加简单和直观。本文将详细介绍C#中异步返回类型…

vue3学习 【5】watch的使用

什么是watch 当我们需要根据一个数据的变化来进行一些操作的时候我们需要使用侦听器&#xff0c;它能够在响应式数据发生变化的时候触发提供的回调函数 基础侦听 watch 可以侦听不同的数据源。例如&#xff1a; ref计算属性响应式对象getter函数多个数据源组层的数据 cons…

20240229金融读报:央行阿拉善创新融资模式与碳排放权交易条例实施,新春政策聚焦新生产力及金融风险防范

1、人民银行阿拉善盟分行实例&#xff1a;再贷款产业链&#xff08;活体牲畜抵押贷款牲畜死亡率保险&#xff09;、“再贷款新型农牧业经营主体”&#xff08;基础设施薄弱、产业结构单一&#xff0c;筹集资金创办嘎查集体经济股份合作社贷款&#xff09; 2、建设银行实例&…

oracle11安装及使用

安装oracle11 官网下载地址 Oracle Database 11g Release 2 for Microsoft Windows (x64) 官网下载慢可访问我的资源 也可以网盘获取 链接&#xff1a;https://pan.baidu.com/s/1RDrGkqDA7tfKRnpJXUBMDw 提取码&#xff1a;z3na 上传安装包到服务器 在指定目录下创建文件…

adb命令

1. 常用命令&#xff1a; adb devices #查看连接设备adb -s cf27456f shell # 指定连接设备使用命令adb install test.apk # 安装应用adb install -r demo.apk #安装apk 到sd 卡&#xff1a;adb uninstall cn.com.test.mobile #卸载应用&#xff0c;需要指定包adb uninstall -…

Windows系统x86机器安装龙芯(loongarch64)3A5000虚拟机系统详细教程

本次介绍在window系统x86机器上安装loongarch64系统的详细教程。 1.安装环境准备。 首先&#xff0c;你得有台电脑。 配置别太差&#xff0c;至少4核8G内存&#xff0c;安装window10或者11都行&#xff08;为啥不能是Window7&#xff0c;你要用也不是不行&#xff0c;你先解决…

leetcode:860.柠檬水找零

题意&#xff1a;按照支付顺序&#xff0c;进行支付&#xff0c;能够正确找零。 解题思路&#xff1a;贪心策略&#xff1a;针对支付20的客人&#xff0c;优先选择消耗10而不是消耗5&#xff0c;因为5可以用来找零10或20. 代码实现&#xff1a;有三种情况&#xff08;代表三种…

vscode中使用python的cv2.imread()读取图片为None

这是之前的代码&#xff1a; import cv2img_path c:\\Users\\LENOVO\\Desktop\\QQ截图20240228234801.jpg print(img_path) print(cv2.__version__)img cv2.imread(img_path) print(img)运行结果&#xff1a; c:\Users\LENOVO\Desktop\QQ截图20240228234801.jpg 3.4.1 None…

Linux下主线程 return 0 和 pthread_exit(NULL) 的区别

1. 背景 在Linux环境下&#xff0c;主线程以return 0结束时&#xff0c;程序会在主线程运行完毕后结束。而当主线程以pthread_exit(NULL)作为返回值时&#xff0c;主线程会等待子线程结束后才会退出程序。本文将详细探讨这两种方式的区别&#xff0c;并提供相应的代码示例。 …

String类的使用

String常用的构造方法 String的源码 内部是一个数组和hash值&#xff0c;涉及到常量池后续补充&#xff08;常量池&#xff1a;存储相同的字符时只会存储一租&#xff09; String的比较 equals()与&#xff1a;String里面为我们提供了许多方法&#xff0c;可直接调用&#xf…

2024最新-ubuntu22.04安装最新版QT6.6~6.8教程

​ 1. 在官网下载 online_installer&#xff1a; https://download.qt.io/archive/online_installers/4.7/qt-unified-linux-x64-4.7.0-online.run 或者直接镜像站下载&#xff1a; http://mirrors.ustc.edu.cn/qtproject/archive/online_installers/4.7/qt-unified-linux-x6…

数据结构之二叉树的精讲

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

苹果汽车项目的败局:起步失误与方向迷茫

苹果汽车的发展方向内部分歧导致项目多年挣扎&#xff0c;最终在本周宣布终止。 Brian X. Chen 和 Tripp Mickle 从项目初期就开始关注苹果的汽车项目。 在过去十年中&#xff0c;许多参与苹果秘密汽车项目“泰坦”&#xff08;内部代号&#xff09;的员工戏称其为“泰坦尼克…

Python实现链表:从基础到应用

一、引言 链表是一种常见的数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据和指向下一个节点的指针。链表在内存中的存储不是连续的&#xff0c;这使得它在插入和删除操作上具有较高的效率。本文将使用Python语言来实现一个简单的链表&#xff0c;并展示其…