Nginx静态资源部署
要在 Nginx 上部署静态资源,可以按照以下步骤进行操作:
-
确保已经安装并配置好 Nginx。如果还没有安装,可以参考 Nginx 的官方文档进行安装和配置。
-
将静态资源文件复制到 Nginx 的默认静态文件目录下。默认情况下,Nginx 的静态文件目录是
/usr/share/nginx/html或/var/www/html。你可以将你的静态资源文件复制到这个目录下,或者根据需要修改 Nginx 的配置文件中的静态文件目录。 -
配置 Nginx 的虚拟主机或服务器块。打开 Nginx 的配置文件(通常是
/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf),找到server块,并在其中添加以下配置:
server {listen 80;server_name example.com;root /usr/share/nginx/html; # 静态文件目录的路径location / {try_files $uri $uri/ =404;}
}
在上面的配置中,listen 指定 Nginx 监听的端口,server_name 指定域名或 IP 地址,root 指定静态文件目录的路径,location 指定请求的处理规则。
- 保存并关闭配置文件,然后重新加载 Nginx 配置文件。可以使用以下命令来检查配置文件是否有语法错误:
sudo nginx -t
如果没有报错,重新加载 Nginx 配置文件:
sudo systemctl reload nginx
- 现在你可以通过浏览器访问你的静态资源了。在浏览器中输入你的域名或 IP 地址,Nginx 将会返回你的静态资源文件。
注意:如果你的静态资源文件包含其他文件类型(如图片、CSS、JavaScript 等),你可能需要在 Nginx 的配置文件中添加相应的 MIME 类型配置,以确保这些文件能够正确地被浏览器解析和加载。
Nginx静态资源的配置指令
以下是一些常用的 Nginx 配置指令,用于配置和优化静态资源的处理:
root:指定静态文件的根目录。例如:
root /usr/share/nginx/html;
location:指定请求的处理规则。可以使用location指令来匹配请求的 URL,并指定相应的处理方式。例如:
location /static {root /usr/share/nginx/html;
}
上述配置将匹配以 /static 开头的 URL,并从 /usr/share/nginx/html/static 目录下返回静态文件。
try_files:指定尝试查找静态文件的顺序。可以使用try_files指令来指定查找静态文件的顺序,如果找不到则返回指定的错误码。例如:
location / {try_files $uri $uri/ =404;
}
上述配置将先尝试查找与请求 URL 匹配的文件,如果找不到则尝试查找以请求 URL 为前缀的目录,最后返回 404 错误码。
expires:指定静态资源的过期时间。可以使用expires指令来设置静态资源的过期时间,以便浏览器缓存这些资源。例如:
location /static {root /usr/share/nginx/html;expires 7d;
}
上述配置将设置 /static 目录下的静态资源在客户端缓存 7 天。
etag:指定静态资源的唯一标识符。可以使用etag指令来设置静态资源的唯一标识符,以便客户端在请求资源时进行缓存验证。例如:
location /static {root /usr/share/nginx/html;etag on;
}
上述配置将为 /static 目录下的静态资源生成唯一的标识符。
gzip:启用 Gzip 压缩。可以使用gzip指令来启用对静态资源的 Gzip 压缩,以减小传输大小。例如:
location /static {root /usr/share/nginx/html;gzip on;gzip_types text/plain text/css application/javascript;
}
上述配置将对 /static 目录下的文本、CSS 和 JavaScript 文件进行 Gzip 压缩。
这些是一些常用的 Nginx 静态资源配置指令。你可以根据具体的需求和场景进行配置。另外,还有其他一些指令和模块可用于进一步优化静态资源的处理和缓存,例如 proxy_cache 模块用于启用反向代理缓存,fastcgi_cache 模块用于启用 FastCGI 缓存等。具体的配置语法和用法可以参考 Nginx 的官方文档。
静态资源缓存处理
Nginx 提供了多种方式来处理静态资源的缓存,以提高性能和减少对后端服务器的请求。以下是一些常用的静态资源缓存处理方式:
- Expires 头:通过设置
expires指令,可以在响应头中添加Expires字段,指定静态资源的过期时间。例如:
location /static {root /usr/share/nginx/html;expires 7d;
}
上述配置将为 /static 目录下的静态资源设置过期时间为 7 天。当客户端第一次请求该静态资源时,Nginx 会将该资源返回,并在响应头中添加 Expires 字段,告诉客户端在 7 天内可以直接使用缓存的资源。
- Cache-Control 头:通过设置
add_header指令,可以在响应头中添加Cache-Control字段,进一步控制静态资源的缓存行为。例如:
location /static {root /usr/share/nginx/html;add_header Cache-Control "public, max-age=604800";
}
上述配置将为 /static 目录下的静态资源设置 Cache-Control 头,指定缓存策略为公共缓存,最大缓存时间为 604800 秒(7 天)。
- Etag 头:通过设置
etag指令,可以为静态资源生成唯一的标识符,并在响应头中添加Etag字段。例如:
location /static {root /usr/share/nginx/html;etag on;
}
上述配置将为 /static 目录下的静态资源生成唯一的标识符。当客户端再次请求该资源时,会将该标识符发送给服务器,服务器可以通过比较标识符来判断资源是否发生了变化,从而决定是否返回新的资源。
- Gzip 压缩:通过启用
gzip指令,可以对静态资源进行 Gzip 压缩,减小传输大小。例如:
location /static {root /usr/share/nginx/html;gzip on;gzip_types text/plain text/css application/javascript;
}
上述配置将对 /static 目录下的文本、CSS 和 JavaScript 文件进行 Gzip 压缩。
这些是一些常用的静态资源缓存处理方式。你可以根据具体的需求和场景选择合适的方式进行配置。另外,还可以使用其他一些 Nginx 模块和指令来进一步优化静态资源的缓存,例如 proxy_cache 模块用于启用反向代理缓存,fastcgi_cache 模块用于启用 FastCGI 缓存等。具体的配置语法和用法可以参考 Nginx 的官方文档。
相关文章:
Nginx静态资源部署
要在 Nginx 上部署静态资源,可以按照以下步骤进行操作: 确保已经安装并配置好 Nginx。如果还没有安装,可以参考 Nginx 的官方文档进行安装和配置。 将静态资源文件复制到 Nginx 的默认静态文件目录下。默认情况下,Nginx 的静态文…...
javaee jstl表达式
jstl是el表达式的扩展 使用jstl需要添加jar包 package com.test.servlet;import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;import javax.servlet.ServletException; import javax.servlet…...
ChatGPT是否具有记忆能力?
ChatGPT在某种程度上具有记忆能力,但它的记忆能力有限且不像人类的记忆那样全面和持久。以下是对ChatGPT的记忆能力的详细分析: 1. 上下文记忆:ChatGPT可以在对话过程中记住先前的对话历史,以便更好地理解和回应后续的问题。通过…...
ARP协议(地址分析协议)
系列文章目录 数通王国历险记(4) 目录 前言 一,什么是地址解析协议(ARP) 二,封装和解封装 三,为什么需要地址解析协议(ARP) 四,ARP的验证实验 4.1&#x…...
c# websocket client java websocket server
实现功能:c# websocket 客户端 连接 java websocket 服务端 一,c# websocket 客户端 nuget websocketsharp-netstandard Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadi…...
【玩转循环】探索Python中的无限可能性
前言 循环可能是每个编程语言中使用比较多的语法了,如果能合理利用好循环,就会出现意想不到的结果,大大地减少代码量,让机器做那些简单枯燥的循环过程,今天我将为大家分享 python 中的循环语法使用。🚗&am…...
网安学习经历小记
明明自觉学会了不少知识,可真正开始做题时,却还是出现了“一支笔,一双手,一道力扣(Leetcode)做一宿”的窘境?你是否也有过这样的经历,题型不算很难,看题解也能弄明白&…...
MyBatis之慎用association
这里先总结一下 association 存在的问题。 一、内嵌查询时存在报错Id找不到及内存溢出隐患 二、一对多关系数据重复问题 三、多层嵌套内层 association 查询结果为null 或 非预期的值 一、内嵌查询时存在报错Id找不到及内存溢出隐患 参考: https://www.lmlphp.co…...
【Java/大数据】Kafka简介
Kafka简介 Kafka概念关键功能应用场景 Kafka的原理Kafka 的消息模型早期的队列模型发布-订阅模型Producer、Consumer、Broker、Topic、PartitionPartitionoffsetISR Consumer Groupleader选举Controller leaderPartition leader producer 的写入流程 多副本机制replicas的同步时…...
【动手学深度学习】读写文件
【动手学深度学习】读写文件 加载和保存张量 对于单个张量 我么可以直接调用load和save函数分别读写,这两个函数要求我们提供一个名称,save要求保存的变量作为输入 import torch from torch import nn from torch.nn import functional as F# 创建一个…...
http-server 的安装与使用
文章目录 问题背景http-server简介安装nodejs安装http-server开启http服务http-server参数 问题背景 打开一个文档默认使用file协议打开,不能发送ajax请求,只能使用http协议才能请求资源,所以此时我们需要在本地建立一个http服务,…...
SQL高级教程
SQL TOP 子句 TOP 子句 TOP 子句用于规定要返回的记录的数目。 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。 注释:并非所有的数据库系统都支持 TOP 子句。 SQL Server 的语法: SELECT TOP number|percent column_name(s) F…...
9.pixi.js编写的塔防游戏(类似保卫萝卜)-群炮弹发射逻辑
游戏说明 一个用pixi.js编写的h5塔防游戏,可以用electron打包为exe,支持移动端,也可以用webview控件打包为app在移动端使用 环境说明 cnpm6.2.0 npm6.14.13 node12.22.7 npminstall3.28.0 yarn1.22.10 npm config list electron_mirr…...
分布式链路追踪
文章目录 1、背景2、微服务架构下的问题3、链路追踪4、核心概念5、技术选型对比6、zipkin 1、背景 随着互联网业务快速扩展,软件架构也日益变得复杂,为了适应海量用户高并发请求,系统中越来越多的组件开始走向分布式化,如单体架构…...
计算机网络————网络层
文章目录 网络层设计思路IP地址IP地址分类IP地址与硬件地址 协议ARP和RARPIP划分子网和构造超网划分子网构造超网(无分类编址CIDR) ICMP 虚拟专用网VPN和网络地址转换NATVPNNAT 网络层设计思路 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数…...
el-table刷新后保持高亮并改变状态字段
一、需求: 1、点击左侧右边显示具体内容 2、点击右边确认 左侧依旧高亮并且改变启动状态颜色 3、点击刷新、重置、高级搜索等不高亮 右边也不显示具体内容 二、效果图: 三、具体实施 1、定义highlight-current-row 是否高亮行 <el-table ref&quo…...
ARM Ubuntu内核更新记录
1,系统版本说明:ARM 鲲鹏920 cat /etc/lsb-release DISTRIB_IDUbuntu DISTRIB_RELEASE18.04 DISTRIB_CODENAMEbionic DISTRIB_DESCRIPTION"Ubuntu 18.04.5 LTS" 2, 将source.list中的deb-src打开 # 默认注释了源码镜像以提高 apt…...
【sgUploadTray】上传托盘自定义组件,可实时查看上传列表进度
【sgUploadTray】上传托盘自定义组件,可实时查看上传列表进度 特性: 可以全屏可以还原尺寸可以最小化可以回到右下角默认位置支持删除队列数据 sgUploadTray源码 <template><div :class"$options.name" :show"show" :size…...
改进二进制粒子群算法在配电网重构中的应用(Matlab实现)【论文复现】
目录 0 概述 1 配电网重构的目标函数 2 算例 3 matlab代码实现 0 概述 配电系统中存在大量的分段开关和联络开关,配电网重构正是通过调整分段开关和联络升大的组合状态来变换网络结构,用于优化配电网某些指标,使其达到最优状态。正常运行时,则通…...
【文章系列解读】Nerf
1. Nerf NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 2020年8月3日 (0)总结 NeRF工作的过程可以分成两部分:三维重建和渲染。(1)三维重建部分本质上是一个2D到3D的建模过程ÿ…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
