Nginx实现动静分离

目录

静态资源

动态资源

区别和应用场景

1. 准备环境

2. 配置代理

3. 静态资源主机配置

4. 动态资源主机配置 

5. 访问静态和动态资源测试

测试1:访问静态资源

测试2:访问动态资源


 

动态资源和静态资源是在网络和Web开发中常用的两个概念,它们有以下基本定义和区别:

静态资源

静态资源是指在服务器上存储的不会随着用户请求或时间变化而改变的文件或内容。它们通常包括以下类型:

  1. 静态网页:HTML、CSS、JavaScript等文件。
  2. 图片文件:如JPEG、PNG、GIF等格式的图片。
  3. 字体文件:如TTF、OTF等格式的字体文件。
  4. 多媒体文件:如MP3、MP4等格式的音频和视频文件。
  5. 其他文件:如PDF文档、文本文件等。

静态资源的特点是不依赖于用户的请求动态生成,服务器直接将文件内容发送给客户端,通常由Web服务器(如Nginx、Apache)直接提供。

动态资源

动态资源则是指在服务器端根据用户请求或其他数据生成的内容,它们具有以下特点:

  1. 动态网页:根据用户登录状态、请求参数等动态生成内容的网页。
  2. 数据库查询结果:从数据库中获取数据并生成的内容。
  3. 实时数据:如股票价格、天气信息等实时变化的数据。

动态资源通常需要通过服务器端脚本语言(如PHP、Python、Node.js)或者专门的Web应用程序(如Django、Flask)来处理用户请求,生成内容,并将结果发送给客户端。

区别和应用场景

  • 性能和缓存:静态资源由于内容稳定性高,通常可以进行缓存,减少服务器负载和提升访问速度。动态资源则需要每次请求时动态生成,较难进行缓存,需要更多的服务器计算资源。

  • 内容更新:静态资源的更新相对简单,直接替换文件即可;动态资源可能涉及到程序代码的修改和更新。

  • 访问控制:静态资源通常通过Web服务器配置直接提供,访问较为简单;动态资源可能需要更复杂的访问控制和权限验证。

 

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。 在动静分离的tomcat的时候比较明显,因为tomcat解析静态很慢,其实这些原理的话都很好理解,简单来说,就是使用正则表达式匹配过滤,然后交个不同的服务器,动态资源交给动态服务器,静态资源交给静态服务器。

 

1. 准备环境

准备一个nginx代理 两个http 分别处理动态和静态。

localhostRoucky_linux9.4192.168.226.20
localhostRoucky_linux9.4192.168.226.21
localhostRoucky_linux9.4192.168.226.22

三台服务器都配置官方的nginx源并下载和启动

sudo tee /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key[nginx-mainline]
name=nginx mainline repo
baseurl=https://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
yum install -y nginx
systemctl enable --now nginx

分别修改默认打开的目录 

#对192.168.226.20修改
echo "webserver1" > /usr/share/nginx/html/index.html
systemctl restart nginx#对192.168.226.21修改
echo "webserver2" > /usr/share/nginx/html/index.html
systemctl restart nginx#对192.168.226.22修改
echo "webserver3" > /usr/share/nginx/html/index.html
systemctl restart nginx

 此时三台服务器都可以正常开启

 

 

2. 配置代理

现在对192.168.226.20操作,配置其nginx文件

vim /etc/nginx/conf.d/default.conf#配置nginx反向代理upstream;
upstream static {server 192.168.226.21:80 weight=1 max_fails=1 fail_timeout=60s;
}
upstream php {server 192.168.226.22:80 weight=1 max_fails=1 fail_timeout=60s;
}
server {listen 80;server_name localhost;# 动态资源加载location ~ \.(php|jsp)$ {proxy_pass http://php;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}# 静态资源加载location ~ .*\.(html|gif|jpg|png|bmp|swf|css|js|txt|mp4)$ {proxy_pass http://static;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

测试Nginx配置文件

nginx -t

重新加载Nginx配置

nginx -s reload

 

3. 静态资源主机配置

对192.168.226.21主机操作,配置其文件

vim /etc/nginx/conf.d/default.conf#静态资源配置
server {listen 80;server_name     localhost;location ~ \.(html|jpg|png|js|css|gif|bmp|jpeg|txt|mp4) {root /home/www/nginx;}
}

 

 测试Nginx配置文件

nginx -t

重新加载Nginx配置

nginx -s reload

创建一个自定义发布目录

mkdir -p /home/www/nginx
cd /home/www/nginx

在这个目录里我上传一些静态资源,如图中所示,有.txt和.mp4等格式结尾的文件

 

4. 动态资源主机配置 

 

对192.168.226.22主机操作,配置其文件

vim /etc/nginx/conf.d/default.conf#动态资源主机配置
server {listen 80;  # 服务器监听端口为80,这通常用于HTTP流量server_name localhost;  # 当前服务器块适用于名为 "localhost" 的请求root /home/nginx/html;  # 设置网站根目录,当请求匹配这个服务器块时,Nginx 会在这个目录中查找文件# 匹配所有以 .php 结尾的请求的配置块location ~ \.php$ {fastcgi_pass unix:/run/php-fpm/www.sock;  # 将请求传递给位于 /run/php-fpm/www.sock 的PHP-FPM Unix套接字进行处理fastcgi_index index.php;  # 定义 FastCGI 的默认文件为 index.php,类似于 Apache 的 DirectoryIndexfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  # 设置SCRIPT_FILENAME变量为当前文档根目录和请求脚本名称的组合。PHP会使用这个变量来确定要执行的脚本include fastcgi_params;  # 包含 fastcgi_params 文件,该文件定义了 FastCGI 处理请求所需的其他变量}
}

 测试Nginx配置文件

nginx -t

重新加载Nginx配置

nginx -s reload

yum 安装php

# 安装epel-release存储库
sudo dnf -y install epel-release
# 安装Remi存储库
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
#启用PHP模块
sudo dnf module reset php
sudo dnf module enable php:remi-7.4
#安装PHP和相关扩展
sudo dnf -y install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
#启动PHP-FPM服务
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
#验证安装
php -v

修改php配置文件

vim /etc/php-fpm.d/www.conf +24#在这附近找到并按照如下修改这两个参数user = nginxgroup = nginx

 

 创建一个自定义的发布目录

mkdir -p /home/nginx/html

 创建index.php测试文件并输入测试代码

sudo tee /home/nginx/html/index.php << 'EOF'
<?php
phpinfo();
?>
EOF

 重启php服务

systemctl restart php-fpm

 

 

5. 访问静态和动态资源测试

 

测试1:访问静态资源

浏览器输入格式: 192.168.226.20/静态资源的文件名

在上面的存放静态资源的发布目录里我传入拉一些格式的静态资源如图:

 

按照上述格式访问如下:

 

 

 

测试2:访问动态资源

浏览器输入格式: 192.168.226.20/动态资源的文件名

在配置动态主机时,创建了一个index.php代码文件,如图:

 

现在访问这个动态页面测试:

 

到此就成功验证了动静资源的分离。 

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

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

相关文章

「全新升级,性能更强大——ONLYOFFICE 桌面编辑器 8.1 深度评测」

文章目录 一、背景二、界面设计与用户体验三、主要新功能亮点3.1 高效协作处理3.2 共同编辑&#xff0c;毫无压力3.3 批注与提及3.4 追踪更改3.5 比较与合并3.6 管理版本历史 四、性能表现4.1 集成 AI 工具4.2 插件强化 五、用户反馈与使用案例 一、背景 Ascensio System SIA -…

48、基于深度学习的离群值输入向量(matlab)

1、基于深度学习的离群值输入向量原理及流程 基于深度学习的离群值检测的输入向量原理是通过神经网络模型对数据进行学习和表示&#xff0c;在该表示中探测异常样本。其流程大致如下&#xff1a; 数据预处理&#xff1a;将数据进行归一化处理&#xff0c;确保神经网络模型能够…

Java Scanner 类

Java Scanner 类 java.util.Scanner 是 Java5 的新特征&#xff0c;我们可以通过 Scanner 类来获取用户的输入。 下面是创建 Scanner 对象的基本语法&#xff1a; Scanner s new Scanner(System.in);接下来我们演示一个最简单的数据输入&#xff0c;并通过 Scanner 类的 nex…

如何评估LabVIEW需求中功能的必要性和可行性

评估LabVIEW需求中功能的必要性和可行性涉及多个方面的分析&#xff0c;包括需求的重要性、技术可行性、资源需求以及潜在风险。以下是一个详细的评估方法&#xff1a; ​ 一、功能必要性评估 需求来源和目的&#xff1a; 来源&#xff1a;需求来自哪里&#xff1f;是客户、市…

Windows系统下安装RabbitMQ详细步骤

声明&#xff1a;原文参考链接出自&#xff1a; 如何在Windows系统下安装RabbitMQ_rabbitmq windows安装-CSDN博客 https://zhuanlan.zhihu.com/p/693160757 一、RabbitMQ安装软件资源准备 因为RabbitMQ是Erlang语言开发的&#xff0c;因此安装Erlang环境在进行安装RbbitMQ的…

贺尔碧格流量阀比例放大器PSR2BE10P25、PSR2BE10P30、PSR2BE10P25

PSR2BE04N06、PSR2BE04P10、PSR2BE04P06、PSR2BE04N10、PSR2BE10N12、PSR2BE10P25、PSR2BE10P30、PSR2BE10P25、PSR3BE10N25、PSR3BE10P30、PSR3BE10P12贺尔碧格HOERBIGER液压比例流量阀由比例电磁铁和流量阀组合而成&#xff0c;利用输入的电信号来改变节流阀的开度&#xff0…

深入解析 iOS 应用启动过程:main() 函数前的四大步骤

深入解析 iOS 应用启动过程&#xff1a;main() 函数前的四大步骤 背景描述&#xff1a;使用 Objective-C 开发的 iOS 或者 MacOS 应用 在开发 iOS 应用时&#xff0c;我们通常会关注 main() 函数及其之后的执行逻辑&#xff0c;但在 main() 函数之前&#xff0c;系统已经为我们…

[Django学习]前端+后端两种方式处理图片流数据

方式1&#xff1a;数据库存放图片地址,图片存放在Django项目文件中 1.首先&#xff0c;我们现在models.py文件中定义模型来存放该图片数据,前端传来的数据都会存放在Django项目文件里的images文件夹下 from django.db import modelsclass Image(models.Model):title models.C…

SiLM5350系列SiLM5350SABCA-DG 10A30V提供分离输出 单通道隔离栅极驱动器

SiLM5350系列SiLM5350SABCA-DG是具体有10A峰值输出电流能力&#xff0c;单通道隔离式栅极驱动器。SiLM5350系列SiLM5350SABCA-DG提供分离输出&#xff0c;可分别控制上升和下降时间。驱动电源电压为4V至30V。3V至18V的宽输入VDDI范围使驱动器适合与模拟和数字控制器接口。所有电…

c++网络通信

TCP/IP协议 OSI参考模型采用分层划分原则&#xff0c;将网络中的数据传输划分为7层&#xff0c;其中&#xff0c;物理层居于最下层&#xff0c;是最基础、核心的网络硬件层&#xff1b;应用层居于最上层&#xff0c;负责应用资源的管理。每一层使用下层的服务&#xff0c;并向…

Python爬取中国福彩网彩票数据并以图表形式显示

网页分析 首先打开中国福彩网&#xff0c;点击双色球&#xff0c;选择往期开奖栏目 进入栏目后&#xff0c;选定往期的奖金数目作为我们想要爬取的目标内容 明确目标后&#xff0c;开始寻找数据所在的位置 鼠标右击页面&#xff0c;打开网页源代码&#xff0c;在源代码中搜索…

<Rust><iced>在iced中显示gif动态图片的一种方法

前言 本文是在rust的GUI库iced中在窗口显示动态图片GIF格式图片的一种方法。 环境配置 系统&#xff1a;window 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;iced、image 概述 在iced中&#xff0c;提供了image部件&#xff0c;从理论上说&…

手机删除照片后还可以恢复吗?5个步骤,教你掌握正确方法

手机里的照片是我们记录生活、珍藏回忆的宝库&#xff0c;但有时候我们可能会不小心删除照片&#xff0c;或者因为各种原因需要恢复已经删除的照片。别担心&#xff0c;这篇文章将为你提供关于手机照片恢复的全面指南&#xff0c;揭开手机照片的恢复之谜&#xff0c;重新拥有那…

前端:Element UI 与 Vuetify 的选择

vuetify优势 1、多端适配&#xff0c;Vuetify完全按照Material设计规范进行开发&#xff0c;每一个组件都经过精心设计&#xff0c;具有模块化、响应式和优秀的性能。 使用独特和动态的 布局 自定义您的应用程序&#xff0c;并使用 SASS 变量 自定义您的组件的样式。只需要做下…

AI入门系列:工具篇之ChatGPT的优秀的国内替代品

文章目录 一&#xff0c;智谱清言(ChatGLM)1&#xff0c;智谱清言简介2&#xff0c;[智谱清言地址&#xff0c;点我开始用吧](https://chatglm.cn/) 二&#xff0c;Kimi智能助手1&#xff0c;Kimi简介2&#xff0c;[Kimi地址&#xff0c;点我开始用吧](https://kimi.moonshot.c…

OnlyOffice-8.1版本深度测评

2024年6月19日&#xff0c;ONLYOFFICE 发布了最新版本 8.1&#xff0c;带来了超过30项新功能和432个 bug 修复。本文将详细评测该版本的新功能和改进&#xff0c;帮助用户全面了解这一升级带来的实际体验提升。 一、功能全面的 PDF 编辑器 PDF 是日常工作中不可或缺的文件格式…

牛拜克拉丝的wordpress免费企业模板

wordpress免费企业模板 挺简洁实用的wordpress免费企业模板&#xff0c;黄色模板搭建公司网站。 演示 https://www.wpniu.com/themes/40.html

​Python20 Numpy基础

NumPy&#xff08;Numerical Python&#xff09;是一个开源的Python库&#xff0c;广泛用于科学计算。它提供了一个高性能的多维数组对象&#xff0c;以及用于处理这些数组的工具和函数。NumPy是数据分析、机器学习、工程和科学研究中不可或缺的工具之一&#xff0c;因为它提供…

如何挑选护眼灯?一分钟带你了解挑选护眼灯的六大准则!

小时候&#xff0c;对正确用眼知识一无所知&#xff0c;也不明白何种光线环境对眼睛最为友善&#xff0c;结果如今的近视度数已濒临千度大关。虽然早已习惯佩戴眼镜的生活&#xff0c;但近视所带来的诸多不便仍旧在日常生活中无处不在。因此&#xff0c;对于家中孩子的视力健康…

GPT-5:人工智能的新篇章,未来已来

目录 GPT-5&#xff1a;人工智能的新篇章&#xff0c;未来已来 引言 1.人工智能的快速发展和对现代社会的影响 2.OpenAI首席技术官米拉穆拉蒂关于GPT-5发布的消息 3.GPT-5对AI领域的潜在影响和期待 4.迎接GPT-5时代的准备 方向一&#xff1a;GPT-5技术突破预测 1.1 GPT-…