Nginx应用与运维——Nginx Web服务应用实战(静态文件服务器的搭建)
Nginx Web服务应用实战1、静态文件服务器的搭建1.1、静态Web服务器1.2、文件下载服务器1.3、伪动态SSI服务器1.3.1、配置指令1.3.2、SSI命令1.3.3、配置样例1、静态文件服务器的搭建静态文件服务器是指提供HTML文件访问或客户端可直接从中下载文件的Web服务器。对于图片、JavaScript或CSS文件等渲染页面外观的、不会动态改变内容的文件大多数网站会单独提供以静态文件服务器的方式对其进行访问实现动静分离的架构。1.1、静态Web服务器HTML是一种标记语言提供HTML文件读取是Web服务器最基本的功能Web服务器的配置样例如下server{listen8080;root /opt/nginx-web/www;# 存放静态文件的文件目录location /{index index.html;}location /js{alias/opt/nginx-web/static/js/;# 存放JavaScript文件的文件目录index index.html;}}在以上配置中每个server指令域等同于一个虚拟服务器每个location指令域等同于一个虚拟目录。1.2、文件下载服务器在对外分享文件时利用Nginx搭建一个简单的下载文件管理服务器文件分享就会变得非常方便。利用Nginx的诸多内置指令可实现自动生成下载文件列表页、限制下载带宽等功能。配置样例如下server{listen8080;server_name localhost;charset utf-8;root /opt/nginx-web/files;# 文件存放目录# 下载location /{autoindex on;# 启用自动首页功能autoindex_format html;# 首页格式为HTMLautoindex_exact_size off;# 文件大小自动换算autoindex_localtime on;# 按照服务器时间显示文件时间default_type application/octet-stream;# 将当前目录中所有文件的默认MIME类型设置为# application/octet-streamif($request_filename* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){# 当文件格式为上述格式时将头字段属性Content-Disposition的值设置为attachmentadd_header Content-Disposition:attachment;;}sendfile on;# 开启零复制文件传输功能sendfile_max_chunk 1m;# 每个sendfile调用的最大传输量为1MBtcp_nopush on;# 启用最小传输限制功能aio on;# 启用异步传输directio 5m;# 当文件大于5MB时以直接读取磁盘的方式读取文件directio_alignment4096;# 与磁盘的文件系统对齐output_buffers432k;# 文件输出的缓冲区大小为128KBlimit_rate 1m;# 限制下载速度为1MBlimit_rate_after 2m;# 当客户端下载速度达到2MB时进入限速模式max_ranges4096;# 客户端执行范围读取的最大值是4096Bsend_timeout 20s;# 客户端引发传输超时时间为20spostpone_output2048;# 当缓冲区的数据达到2048B时再向客户端发送chunked_transfer_encoding on;# 启用分块传输标识}}1.3、伪动态SSI服务器Nginx可以通过SSI命令将多个超文本文件组合成一个页面文件发送给客户端。SSI(Server Side Include)是一种基于服务端的超文本文件处理技术。由于SSI仍是通过其他动态脚本语言获取动态数据的所以此处将其归类为伪动态服务功能。SSI服务器可通过SSI命令实现诸多动态脚本语言的HTML模板功能配合其他动态脚本服务的API完全可以实现前后端分离的Web应用。1.3.1、配置指令Nginx是通过ngx_http_ssi_module模块实现SSI命令处理的SSI配置指令如表所示。上述指令均可编写在http、server、location指令域中ssi指令还可编写在if指令域中。1.3.2、SSI命令SSI命令格式如下!--# command parameter1value1 parameter2value2 ... --Nginx支持如下SSI命令。(1)block通过block命令可以定义一个超文本内容该内容可以被include命令参数stub引用。超文本内容中可以包含其他SSI命令。(2)include通过include命令可以引入一个文件或请求响应的结果数据。参数有file引入一个文件​、virtual引入一个内部请求响应数据​、stub引入一个block内容为默认数据​、wait是否等待virtual参数发起请求处理完毕再处理SSI命令​、set将virtual参数的响应内容输出到指定的变量​。SSI文件配置样例如下!--# block nameone --nbsp;!--# endblock -- # block one的内容为空!--# include filefooter.html stubone --# 引用文件footer.html的内容若footer.html文件不存在或SSI命令出错输出block one的内容!--# include virtual/remote/body.php?argumentvalue waityes stubonesetbody--# 引用内部请求的响应数据等待请求完毕再处理SSI指令若出错则输出block one的内容成功则# 把返回结果赋值给变量bodyNginx中样例配置如下location /remote/{subrequest_output_buffer_size 128k;# 子请求的输出缓冲区大小是128KB...}include不支持“…/”这样的相对路径。include参数set的响应数据大小通过指令subrequest_output_buffer_size设置。(3)config通过config命令可以设置SSI处理过程中使用的参数errmsgSSI处理出错时输出的字符串和timefmt输出时间的格式默认为“%A,%d-%b-%Y %H:%M:%S %Z”​​。!--# config errmsgoh!出错了 timefmt%A, %d-%b-%Y %H:%M:%S %Z --(4)set通过set命令设置变量。参数有var变量名和value变量值​。(5)echo通过echo命令输出变量的值。参数有encodingHTML编码方式默认为entity​、default变量不存在时定义的默认输出默认为none​。!--# set varThis_TEST valuewith a SSI test value --!--# echo varThis_TEST --(6)if通过if命令可进行条件控制且if命令支持正则判断。!--# if expr$name ! /text/ --!--# echo varname --!--# endif --!--# if expr$name /(.)(?Pdomain.)/ --!--# echo vardomain --!--# else --!--# echo var1 --!--# endif --1.3.3、配置样例根据Nginx SSI模块提供的功能可以搭建一个类似HTML框架的前端模板网站。模板目录规划如下├── _footer.html ├── _header.html ├── _head.html ├── index.html ├── _sidebar.html ├── static │ └── main.css └── table.html文件_footer.html内容如下dividfooter!--# config timefmt%Y --copy;!--# echo vardate_local --Nginx SSI sample - All Rights Reserved./div文件_header.html内容如下dividlogoimgsrchttp://nginx.org/nginx.pngstylewidth:100px;altnginx/divdividheaderulclassnav nav-pillsliclassactiveahrefindex.html首页/a/liliahreftable.html表格测试/a/liliahref#测试2/a/li/ul/div文件_head.html内容如下!DOCTYPEhtmlPUBLIC-//W3C//DTD XHTML 1.0 Transitional//ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdhtmlheadmetacontenttext/html; charsetUTF-8http-equivContent-Typelinkrelstylesheethrefhttps://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.cssscriptsrchttps://cdn.staticfile.org/jquery/2.1.1/jquery.min.js/scriptscriptsrchttps://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js/scriptlinkrelstylesheethref/static/main.css?v12/head文件index.html内容如下!--# block nameone --!--# endblock --!--# include file_head.html stubone --bodydiv!--# include file_header.html stubone --!--# include file_sidebar.html stubone --/divdividsectionh1Hello World/h1/div!--# include file_footer.html stubone --/body/html文件_sidebar.html内容如下dividsidebarulclassnav navbar-navliclassactiveahrefhttp://www.baidu.comtargetblank百度/a/liliclassactiveahref#测试/a/li/ul/div首页页面效果如图所示。文件table.html内容如下!--# block nameone --!--# endblock --!--# include file_head.html stubone --bodydiv!--# include file_header.html stubone --!--# include file_sidebar.html stubone --/divdividsectiontableclasstablecaption表格示例/captiontheadtrth省份/thth省会/th/tr/theadtbodytrtd上海/tdtd上海/td/trtrtd广东/tdtd广州/td/tr/tbody/table/div!--# include file_footer.html stubone --/body/html表格页页面效果如图所示。Nginx配置内容如下server{listen8081;server_name localhost;charset utf-8;root /opt/nginx-web/nginx-ssi;sendfile on;ssi on;# 启用SSI命令解析支持ssi_min_file_chunk 1k;# 存储在磁盘上的响应数据的最小值为1KBssi_value_length1024;# SSI中变量值的最大长度为1024字节ssi_silent_errors off;# 输出errmsg的内容location /{index index.html;}}

相关新闻

实战:用像素匠人5天完成3个项目方案,效率提升10倍【附完整SOP】

实战:用像素匠人5天完成3个项目方案,效率提升10倍【附完整SOP】

实战经验分享:用像素匠人 5 天完成 3 个项目方案,我是如何做到的? 写在前面 上个月接到老板的任务:一周内完成三个客户的项目方案评估。分别是教育培训平台、智能仓储管理系统、社区团购小程序。按传统流程,每个方案…

2026/10/3 7:18:55 阅读更多 →
业务中 M3U8 链接日志打印、问题反馈该收集哪些信息

业务中 M3U8 链接日志打印、问题反馈该收集哪些信息

一、用户反馈视频故障,只说一句 “视频打不开” 线上用户反馈播放异常,很多时候反馈内容就只有简单一句话 “视频打不开,播放黑屏”。开发手上没有任何有效信息,很难复现问题,来回反复找用户要信息,沟通效…

2026/10/3 7:18:55 阅读更多 →
fmp4 碎片 MP4 格式 HLS 流,和传统 TS 分片有什么不一样

fmp4 碎片 MP4 格式 HLS 流,和传统 TS 分片有什么不一样

一、不止 TS 分片,HLS 还支持 fmp4 碎片 MP4 格式 大部分新手接触 HLS,看到的分片后缀都是.ts,很多人以为 HLS 只能用 TS 分片。实际上 HLS 协议也支持 fmp4 碎片 MP4(也叫 CMAF)分片,分片后缀是.m4s。 现…

2026/10/3 7:18:55 阅读更多 →

最新新闻

如何在5分钟内搭建Cloudflare OS工作空间?新手必备的完整指南

如何在5分钟内搭建Cloudflare OS工作空间?新手必备的完整指南

如何在5分钟内搭建Cloudflare OS工作空间?新手必备的完整指南 【免费下载链接】cloudflare-os Agent workspace built on Cloudflare Workers for creating documents, building apps, and running agents with your company’s context and systems. 项目地址: h…

2026/10/4 9:53:40 阅读更多 →
插件系统原理与加载失败排查:从IAR、MusicFree到web boot

插件系统原理与加载失败排查:从IAR、MusicFree到web boot

干嵌入式开发的调 IAR,偶尔会看到插件相关的提示;用 MusicFree 听歌的,装个音源插件失败也会一头雾水;做前端或者维护插件化平台的,可能天天跟harness failed to load plugins web boot: 2 entries did not activate l…

2026/10/4 9:53:40 阅读更多 →
插件加载失败排查指南:从did not activate到根治

插件加载失败排查指南:从did not activate到根治

先说实话:过去一周我至少收到了三条跟plugins相关的求助消息,报错长得几乎一模一样——Failed to load plugins web boot: 2 entries did not activate,后面还跟着一串奇怪的包名,比如linxin666/dsh-p、huayu-yuan。问的人多了&am…

2026/10/4 9:53:40 阅读更多 →
QwenPaw安装与使用手册:从API Key配置到终端高效调用通义千问

QwenPaw安装与使用手册:从API Key配置到终端高效调用通义千问

今天这篇内容就是一份完整的 QwenPaw 安装与使用手册,我会从零开始讲清楚环境准备、安装步骤、API Key 的获取与查看、日常使用技巧,以及我踩过的几个坑。适合刚接触 API 调用的新手,也适合想把本地工作流搬到终端的老手。QwenPaw 说白了就是…

2026/10/4 9:53:40 阅读更多 →
Apache Fesod(Incubating)Committer 成长指南:从持续贡献到获得提交权限的完整路径

Apache Fesod(Incubating)Committer 成长指南:从持续贡献到获得提交权限的完整路径

后端 【免费下载链接】fesod Fast. Easy. Done. Processing spreadsheets without worrying about large files causing OOM. 项目地址: https://gitcode.com/gh_mirrors/fast/fesod 点击查看 免费下载 Apache Fesod(Incubating)是一个正处在…

2026/10/4 9:53:40 阅读更多 →
把经典蒸馏成可执行技能:知识蒸馏的实践方法论

把经典蒸馏成可执行技能:知识蒸馏的实践方法论

1. 项目概述:当“知识蒸馏”从AI实验室走进书房书桌最近在几个读书社群里,反复看到有人问:“读完《道德经》八遍,还是说不出它到底教人怎么做事”;也常有产品经理、独立开发者、内容创作者私下聊:“道理都懂…

2026/10/4 9:52:40 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →