实现动静分离的 Nginx 配置详解与应用

2023-12-18

前言

在网站运维与性能优化中,动静分离是一种关键策略,能够有效提升网站性能和用户体验。本文将介绍动静分离的概念、实现方式以及通过 Nginx 实现动静分离的具体步骤。

1 动静分离简介

动静分离并非仅是简单地将动态页面和静态页面物理分开。它更关注将动态请求和静态请求分隔开,通常通过将静态文件和动态请求交给不同的服务器处理,例如使用 Nginx 处理静态页面,而将动态请求交由 Tomcat 等服务器处理。

1.1 直接访问静态资源

当用户在浏览器中请求网站的静态资源(如图片、CSS 文件、JavaScript 文件等)时,Nginx的配置使得这些静态资源可以直接被 Nginx 定位并返回给用户,而无需经过 Tomcat 或其他动态服务器的处理。

1.2 优化加载速度

由于静态资源无需经过后端动态服务器的处理,Nginx 直接提供这些文件,因此大大缩短了获取资源的响应时间。这种优化可显著提升页面加载速度和用户体验,尤其对于大型网站或高访问量的站点更为显著。

1.3 减轻动态服务器负担

Nginx 对静态资源的直接处理有效减轻了后端 Tomcat 或其他动态服务器的负担。动静分离策略让动态服务器专注于处理动态内容或交互,不再处理静态资源的请求,提高了整体服务器的性能和稳定性。

1.4 提升用户体验

快速加载的静态资源能够加速页面渲染速度,用户可以更快地获得网站内容,提升了用户的满意度和留存率。

通过 Nginx 实现的动静分离策略,使得静态资源能够更高效地被获取和加载,从而有效提升了网站的性能表现,并且优化了服务器的资源利用,为用户提供了更快速、更稳定的访问体验。

在这里插入图片描述

2 动静分离的实现方式

实现动静分离主要有两种方式:

  • 独立域名、独立服务器: 将静态文件放置于独立的域名下,部署在独立的服务器上。这是当前主流推崇的方案。
  • Nginx 分离动静态文件: 将动态和静态文件混合发布,通过 Nginx 配置不同的 location 和后缀名来区分处理请求。可以通过 expires 参数设置浏览器缓存时间,减少与服务器之间的请求和流量。

3 实现效果

通过 Nginx 配置,实现在访问静态资源时直接通过 Nginx 访问对应服务器上的静态资源文件,而不经过 Tomcat 服务器。

4 准备静态资源

在我们的示例中,首先创建了一个名为 data 的目录。在这个目录下,我们建立了两个主要的目录: www image

  • www 目录: 这个目录用于存放网站的页面文件。在这里,我们放置了名为 a.html 的页面文件,通常这是网站的一个静态页面,可以包含着网站的基本内容、链接以及其他资源的引用等。
  • image 目录: 这个目录用于存放网站所需的图片资源。在这个示例中,我们将名为 1.jpg 的图片文件存放在此处。图片文件通常是网站中不可或缺的静态资源之一,用于丰富网页内容、装饰页面或作为视觉元素的一部分。

通过在这些目录中存放网站所需的静态资源,动静分离的策略使得这些静态资源可以直接被 Nginx 返回,而不需要经过后端的动态服务器处理。

5 Nginx 配置示例(nginx.conf)

Nginx 的配置是实现动静分离的关键。在本示例中,通过编辑 Nginx 的配置文件(通常是 nginx.conf ),我们设置了特定的规则以实现动静分离。

5.1 配置文件

server {
    listen 80;
    server_name 192.168.17.129;

    location /www/ {
        root /data/;
        index index.html index.htm;
    }

    location /image/ {
        root /data/;
        autoindex on;
    }
}

5.2 配置说明

在这段配置中,关键的部分如下:

  • server 块:定义了一个监听端口为 80 的服务器块。

  • listen 指令:指定 Nginx 监听的端口号,这里是 80,即 HTTP 默认端口。

  • server_name 指令:设定服务器的域名或 IP 地址。

  • location 块:根据不同的 URL 路径配置不同的处理规则。

    • /www/ /image/ 分别是 URL 路径的前缀,在用户请求带有这些前缀的 URL 时触发相应的处理。
    • root 指令:设置了该路径下对应的实际文件存储位置,这里是 /data/ 目录。
    • index 指令:定义了当访问一个目录时,默认显示的文件,这里是 index.html index.htm
    • autoindex on :开启了自动目录索引功能,在访问 /image/ 路径时可以列出该目录下的文件列表。

通过这样的配置,当用户请求以 /www/ /image/ 开头的 URL 路径时,Nginx 将会根据配置找到对应的静态资源文件,并直接返回给用户,实现了动静分离的效果。这样的设置能够显著提高网站的访问速度和性能,同时也减轻了后端服务器的负载压力。

6 检查测试

检查 Nginx 配置是否正确,并测试动静分离是否成功。删除后端 Tomcat 服务器上的某个静态文件,尝试访问该文件,若能成功访问,则说明 Nginx 直接返回了静态资源,没有经过后端 Tomcat 服务器的处理。

在这里插入图片描述

结语

动静分离通过合理配置服务器,提高了网站性能和用户体验。使用 Nginx 实现动静分离,能够更高效地处理静态资源请求,减轻动态服务器的负载,是网站优化中的重要一环。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现动静分离的 Nginx 配置详解与应用 的相关文章

随机推荐

  • 吴恩达机器学习笔记七 逻辑回归的梯度下降 过拟合及解决方法

    两个偏导数 逻辑回归的梯度下降 泛化 generalization 对全新的示例也能做出良好的预测 解决过拟合的方法 1 收集更多的测试数据 2 特征选择 feature selection 使用更少的特征 3 正则化 regulariza
  • 题解 | #火车进站#

    解约的同学看过来 提供一份解约思路 题解 火车进站 include
  • Linux性能优化常做的一些事情

    Linux性能优化是一个广泛的主题 涉及多个方面 以下是一些常见的Linux性能优化建议 硬件和系统配置 使用SSD替代HDD 确保系统有足够的RAM 使用多核CPU 配置合适的网络硬件和带宽 磁盘I O性能 使用RAID来提高I O性能
  • Win7系统提示找不到dmvscres.dll文件的解决办法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个dmvscre
  • Win7系统提示找不到dmsynth.dll文件的解决办法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个dmsynth
  • 目标检测深度学习的anchor

    在目标检测深度学习中 Anchor是一种预定义的框 用于在图像中采样不同位置 尺度和长宽比例的区域 作为目标检测模型的候选区域 Anchor是Faster R CNN等基于Anchor的目标检测算法的核心概念 具体来说 Anchor有以下几
  • 深度学习目标检测全连接层什么意思

    在深度学习目标检测中 通常我们使用卷积神经网络 Convolutional Neural Network CNN 进行特征提取 CNN 的主要结构包括卷积层和池化层 用于从输入图像中提取特征 然而 为了最终输出目标的类别和位置信息 通常在网
  • 题解 | #平均活跃天数和月活人数#

    金融科技岗分享 欢聚shopline 凉 又遇毁到offer 爱奇艺互动产品运营实习面经 百度大搜2024校招补录 搜索时效性团队工作职责 1 通过query理解 召回 排序全链路的优化 持续优化百度搜索时效排序效果2 持续探索落地最前沿的
  • WMS系统出库扫描:提升仓储管理效率与准确性

    WMS系统中的出库扫描功能是关键环节之一 它通过扫描物料或货物的条形码或二维码 实现实时 准确地记录和更新库存信息 一 WMS系统出库扫描的重要性 1 实现库存准确性 通过出库扫描 WMS系统能够准确记录物料或货物的出库信息 实时更新库存数
  • 持续集成交付CICD:Jenkins使用GitLab共享库实现前端项目镜像构建

    目录 一 实验 1 GitLab修改项目文件与Harbor环境确认 2 Jenkins使用GitLab共享库实现前端项目镜像构建 3 优化CI流水线封装Harbor账户密码 4 Jenkins再次使用GitLab共享库实现前端项目镜像构建
  • 精通Nginx(25)-Nginx Plus增强功能之缓存清除、复杂媒体流支持、安全防护

    Nginx Plus在缓存清除 复杂媒体流支持 安全防护也做了增强 缓存清除 NGINX Plus 可手工指定清除缓存项 配置示例如下 http 请求是PURGE缓存清除方法 map request method purge method
  • 题解 | #浙江大学用户题目回答情况#

    快手测开二面面经 国企面经 多家 得物 测开 一面 中国联通陕西省分公司薪资待遇 京东健康前端实习一面凉经 求java推荐项目 面经回馈 秋招及实习历程中笔经 面经 时间梳理 国企银行 秒杀项目常见问题 终焉篇 双非本产品经理35w 终于来
  • 24届还有在看工作机会的吗,求求大家看下小米吧,HC非常多

    一定要反问HR的六个问题 offer比较 华为 vs OPPO 离谱的一周 百度裁应届 拼多多 非必要就别去了吧 阿里云25k gt 美团29k 实习转正啦 进来看耍猴 12 17更新 25届实习招聘信息汇总走起 策论 设计产出 Learn
  • Win7系统提示找不到dmutil.dll文件的解决办法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个dmutil
  • 永新光学:用纷享销客打造高效管理平台,实现产销一体快速运转

    一方面 随着科技的进步和应用领域的扩大 光学仪器的需求不断增加 从医疗 教育 工业 军事 各个领域对光学仪器的需求都在不断增长 另一方面 数字化技术的应用也在光学仪器行业得到广泛推广 从设计制造到销售服务 数字化管理提供了更高效 精细化的方
  • 设计与算法:全排列

    描述 给定一个由不同的小写字母组成的字符串 输出这个字符串的所有全排列 我们假设对于小写字母有 a lt b lt lt y lt z 而且给定的字符串中的字母已经按照从小到大的顺序排列 输入 输入只有一行 是一个由不同的小写字母组成的字符
  • 2023 英特尔On技术创新大会中国站,最佳“游览指南”来了!

    CSDN IntelEdgeComputing 渠道注册链接 添加我为微信好友 2023英特尔On技术创新大会中国站即将上线 12 月 19 日 09 00 助力开发者 让AI无处不在 CSDN IntelEdgeComputing专属福利
  • 如何清空电脑所有数据?3个方法,快速释放空间!

    大家快帮帮我 我的电脑内存严重不足了 使用的时候非常卡顿 我想把所有的数据都清除了 但是不知道如何操作 有快速的数据删除方法吗 随着我们电脑使用时间的变长 电脑的内存也会渐渐不足 部分用户可能需要将所有数据都清空 以此来保存电脑的可持续运行
  • 【论文阅读笔记】A Recent Survey of Vision Transformers for Medical Image Segmentation

    Khan A Rauf Z Khan A R et al A Recent Survey of Vision Transformers for Medical Image Segmentation J arXiv preprint arXi
  • 实现动静分离的 Nginx 配置详解与应用

    目录 前言 1 动静分离简介 1 1 直接访问静态资源 1 2 优化加载速度 1 3 减轻动态服务器负担 1 4 提升用户体验 2 动静分离的实现方式 3 实现效果 4