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的建模过程ÿ…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
