当前位置: 首页 > article >正文

使用Nginx搭建文件服务器的全过程

为什么选择 Nginx 作为文件服务器1.性能优势高并发处理- 轻量级支持大量并发连接低资源消耗- 内存占用少CPU使用率低静态文件服务- 专门优化过的静态文件传输高稳定性- 长期运行稳定可靠2.功能特性简单的配置- 配置文件简洁明了HTTP基本认证- 内置访问控制目录浏览- 自动显示目录内容防盗链- 防止他人盗用资源基础配置1.安装 Nginx1234567891011# Ubuntu/Debiansudoapt updatesudoaptinstallnginx# CentOS/RHELsudoyuminstallnginx# 或者使用 dnf (较新版本)sudodnfinstallnginx# Windows# 下载安装包并运行2.基本文件服务器配置123456789101112131415161718192021# /etc/nginx/sites-available/fileserverserver {listen 80;server_name your-domain.com; # 或者使用IP地址# 文件服务器根目录location / {root /var/www/files; # 指定文件存储目录autoindex on; # 启用目录浏览autoindex_exact_size off; # 文件大小显示为人类可读格式autoindex_localtime on; # 显示本地时间而非GMT时间# 设置基本认证可选auth_basic Restricted Access;auth_basic_user_file /etc/nginx/.htpasswd;}# 限制访问日志可选access_log /var/log/nginx/fileserver_access.log;error_log /var/log/nginx/fileserver_error.log;}3.创建认证文件12345678# 安装htpasswd工具sudoaptinstallapache2-utils# Ubuntu/Debian# 或sudoyuminstallhttpd-tools# CentOS/RHEL# 创建用户和密码文件sudohtpasswd -c/etc/nginx/.htpasswd username# 系统会提示输入密码高级配置1.HTTPS 配置1234567891011121314151617181920212223242526272829server {listen 443 ssl http2;server_name your-domain.com;ssl_certificate /path/to/your/certificate.crt;ssl_certificate_key /path/to/your/private.key;# SSL 安全配置ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;ssl_prefer_server_ciphers off;location / {root /var/www/files;autoindex on;autoindex_exact_size off;autoindex_localtime on;# 限制文件上传大小client_max_body_size 100M;}}# HTTP 重定向到 HTTPSserver {listen 80;server_name your-domain.com;return 301 https://$server_name$request_uri;}2.防盗链配置1234567891011121314151617server {listen 80;server_name your-domain.com;location /files/ {root /var/www;autoindex on;autoindex_exact_size off;autoindex_localtime on;# 防盗链配置valid_referers none blocked server_names *.your-domain.com;if ($invalid_referer) {return 403;}}}3.压缩传输1234567891011121314151617server {listen 80;server_name your-domain.com;# 启用Gzip压缩gzip on;gzip_vary on;gzip_min_length 1024;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xmlrss text/javascript;location / {root /var/www/files;autoindex on;autoindex_exact_size off;autoindex_localtime on;}}4.自定义文件类型处理12345678910111213141516171819202122server {listen 80;server_name your-domain.com;# 自定义MIME类型location ~* \.pdf$ {root /var/www/files;add_header Content-Type application/pdf;add_header Content-Disposition attachment;}location ~* \.(jpg|jpeg|png|gif)$ {root /var/www/files;expires 30d; # 缓存30天add_header Cache-Control public, immutable;}location ~* \.txt$ {root /var/www/files;add_header Content-Type text/plain;}}完整的生产环境配置123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778# /etc/nginx/sites-available/fileserver.confupstream fileserver_backend {server 127.0.0.1:8080; # 如果需要反向代理到应用服务器}server {listen 80;listen [::]:80;server_name your-domain.com;# 重定向到HTTPSreturn 301 https://$server_name$request_uri;}server {listen 443 ssl http2;listen [::]:443 ssl http2;server_name your-domain.com;# SSL证书配置ssl_certificate /path/to/certificate.crt;ssl_certificate_key /path/to/private.key;ssl_trusted_certificate /path/to/ca.crt;# SSL安全配置ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;ssl_prefer_server_ciphers off;# 安全头add_header X-Frame-Options DENY always;add_header X-Content-Type-Options nosniff always;add_header X-XSS-Protection 1; modeblock always;add_header Strict-Transport-Security max-age63072000 always;# 文件上传限制client_max_body_size 100M;# 静态文件服务location / {root /var/www/files;autoindex on;autoindex_exact_size off;autoindex_localtime on;# 缓存静态文件expires 1d;add_header Cache-Control public, immutable;# 防盗链valid_referers none blocked server_names *.your-domain.com;if ($invalid_referer) {return 403;}}# 特定目录配置location ^~ /private/ {root /var/www;auth_basic Private Area - Authorization Required;auth_basic_user_file /etc/nginx/.htpasswd;}# 日志配置access_log /var/log/nginx/fileserver_access.log;error_log /var/log/nginx/fileserver_error.log;}# 服务状态监控可选server {listen 127.0.0.1:8080; # 仅本地访问location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;deny all;}}启用配置1.启用站点12345678910111213# 创建软链接Ubuntu/Debiansudoln-s/etc/nginx/sites-available/fileserver.conf/etc/nginx/sites-enabled/# 或者直接复制配置文件sudocp/etc/nginx/sites-available/fileserver.conf/etc/nginx/conf.d/fileserver.conf# 测试配置sudonginx -t# 重新加载配置sudosystemctl reload nginx# 或sudonginx -s reload2.创建文件目录12345678# 创建文件存储目录sudomkdir-p/var/www/filessudochownwww-data:www-data/var/www/filessudochmod755/var/www/files# 或者使用自定义目录mkdir-p ~/shared-files# 在配置中使用绝对路径文件上传功能配合后端1.Nginx 配置配合后端处理上传123456789101112131415161718192021server {listen 80;server_name your-domain.com;# 文件上传处理需要后端应用location /upload {proxy_pass http://127.0.0.1:3000; # 后端应用地址client_max_body_size 100M;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}# 文件访问location /files/ {root /var/www;autoindex on;autoindex_exact_size off;autoindex_localtime on;}}2.简单的上传页面12345678910111213!DOCTYPE htmlhtmlheadtitle文件上传/title/headbodyh2文件上传/h2formaction/uploadmethodpostenctypemultipart/form-datainputtypefilenamefilerequiredbuttontypesubmit上传/button/form/body/html安全配置1.访问控制1234567891011121314# IP白名单location / {root /var/www/files;allow 192.168.1.0/24; # 允许特定IP段allow 127.0.0.1;deny all; # 拒绝其他所有IPautoindex on;}# 基本认证location /protected/ {auth_basic Restricted;auth_basic_user_file /etc/nginx/.htpasswd;}2.防止恶意文件上传1234567891011121314151617# 禁止执行脚本文件location ~* \.(php|pl|py|jsp|asp|sh|cgi)$ {deny all;return 404;}# 限制上传文件类型location /uploads {location ~* \.(jpg|jpeg|png|gif|pdf|doc|docx|txt|zip|rar)$ {# 允许的文件类型}location ~* \.(php|html|htm|js|css)$ {deny all;return 404;}}性能优化1.缓存配置12345678910111213141516# 启用文件缓存location / {root /var/www/files;autoindex on;autoindex_exact_size off;autoindex_localtime on;# 设置缓存expires 1y;add_header Cache-Control public, immutable;# 启用sendfilesendfile on;tcp_nopush on;tcp_nodelay on;}2.Gzip压缩12345678910111213# 全局启用Gzipgzipon;gzip_vary on;gzip_min_length 1024;gzip_proxied expired no-cache no-store private must-revalidate auth;gzip_typestext/plaintext/csstext/xmltext/javascriptapplication/javascriptapplication/xmlrssapplication/json;管理和监控1.常用命令1234567891011121314151617# 启动Nginxsudosystemctl start nginx# 停止Nginxsudosystemctl stop nginx# 重启Nginxsudosystemctl restart nginx# 重载配置sudosystemctl reload nginx# 检查配置sudonginx -t# 查看状态sudosystemctl status nginx2.日志查看12345678# 查看访问日志sudotail-f/var/log/nginx/access.log# 查看错误日志sudotail-f/var/log/nginx/error.log# 统计访问量sudoawk{print $1}/var/log/nginx/access.log |sort|uniq-c |sort-nr总结使用 Nginx 作为文件服务器的优势高性能- 静态文件服务效率极高配置简单- 配置文件直观易懂功能丰富- 支持认证、防盗链、缓存等安全可靠- 企业级稳定性资源占用少- 轻量级适合各种规模部署Nginx 是搭建文件服务器的理想选择特别适合用于静态文件分发、内网文件共享、CDN节点等场景。

相关文章:

使用Nginx搭建文件服务器的全过程

为什么选择 Nginx 作为文件服务器 1.性能优势 高并发处理 - 轻量级,支持大量并发连接低资源消耗 - 内存占用少,CPU使用率低静态文件服务 - 专门优化过的静态文件传输高稳定性 - 长期运行稳定可靠 2.功能特性 简单的配置 - 配置文件简洁明了HTTP基本认证…...

linux安装mysql8.0全过程

查看服务器架构,下载对应安装包1uname -m2.上传解压包到usr/local解压安装包1tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz3.修改解压后的文件夹为mysql1mv mysql-8.0.27-linux-glibc2.12-x86_64 mysql4.创建mysql用户组和用户并修改权限123groupadd mysql…...

Linux删除文件名包含无效编码字符文件的方法

在Linux中,文件名包含无效编码字符或特殊不可见字符时,可能导致此文件无法通过常规方式选中或删除,可以通过下面方法处理1、确认文件名问题检查终端编码环境1echo $LANG # 默认应为 UTF-8(如 en_US.UTF-8)查看文件名…...

nginx+rtmp实现直播完整流程

一,环境准备 1.下载nginx-rtmp-module: 1 2 cd /www/server/ git clone https://github.com/arut/nginx-rtmp-module.git 2.Nginx安装: 这是用了宝塔哈。 软件商店 > 应用搜索:nginx > 安装 > 编译安装 > 添加自定义模块 模块…...

Nginx同端口部署多个vue以及unapp项目

同一个端口部署pc和app端项目,Nginx配置,前端打包配置解决方案配置pc端vue项目打包配置配置uniapp项目打包配置,manifest.json文件添加配置123456789101112131415161718192021222324252627"h5": {"router": {"mode&…...

依据新版CNAS-CL01文件软件测试实验室需要建立哪些程序文件

当实验室将申请 CNAS 资质纳入发展规划,第一阶段需要做的是就是按照CNAS相关文件的要求,建立质量管理体系。在一系列的CNAS认可文件中,CNAS-CL01 堪称构建体系的 “基石”,是实验室建立质量管理体系的重要参考文件。实验室质量管理…...

基于STM32L4XX 、HAL库的TMP100NA/3K数字温度传感器驱动应用C语言程序设计

一、简介: TMP100NA 是德州仪器(TI)生产的数字温度传感器。 二、主要技术特性: 测量精度:典型条件下 0.5C(-25C 至 +85C),全温范围 2C(-55C 至 +125C) 分辨率:9 至 12 位可编程(0.5C 至 0.0625C),上电默认为 12 位 接口:I2C/SMBus 兼容,时钟速率最高 400kHz…...

32TOPS算力+工业级宽温适配!SE110S-WA32边缘计算微服务器全解析

随着工业智能化、AIoT产业的深度发展,边缘侧的算力需求迎来爆发式增长。在智慧交通、水利、电力、工地等工业场景中,边缘设备不仅需要强劲的AI推理能力,更要面对高低温、多尘、强电磁干扰、无人值守等严苛的运行环境,同时对功耗、…...

维谛ER4850S2整流模块用户手册

1 简介1.1 型号说明ER4850S2整流模块(以下简称整流模块)型号说明如图1所示。图1 型号说明1.2 外观整流模块的外观如图2所示。图2 整流模块外观图1.3 前面板整流模块的前面板3个指示灯,如图3所示。图3 整流模块前面板图模块固定螺钉&am…...

定做膏方流程

随着大健康消费升级,膏滋因便捷性与养生价值受到市场青睐,膏滋贴牌赛道也迎来快速增长。行业报告显示,近三年国内膏滋贴牌市场年复合增速超20%,定做膏方的需求逐渐从零散走向标准化。其中,湖北金鹰生物科技有限公司凭借…...

镜像视界·港口无穿戴无感定位技术白皮书

版本号:V1.0 发布日期:2026年04月13日 发布单位:镜像视界(浙江)科技有限公司 文档状态:终稿 Final摘要本白皮书聚焦港口场景核心痛点,系统阐述镜像视界无穿戴无感定位解决方案的技术原理、架构体…...

社媒平台限流频发卖家如何突破流量瓶颈

突围算法围城:社交媒体时代卖家的流量破局之道清晨的第一缕阳光还未完全照亮城市,无数卖家已经坐在屏幕前,眉头紧锁。昨日还表现良好的内容,今天的数据却惨淡得令人心慌。通知栏里,那个熟悉的限流提示如同冰冷的判决书…...

如何选择适合的西安GEO优化机构进行云造智搜AIGEO服务?

在选择适合的西安GEO优化机构时,了解其收费标准与服务内容构成至关重要。不同机构的费用结构可能各异,常见的费用包括基础服务费、项目管理费和根据效果而定的提成。在评估团队实力时,查看其过往案例和客户反馈是有效的方法,可帮助…...

从个人网盘到企业网盘,教育行业的文件管理进化之路经历了什么?

教育数字化进程加速,培训机构和学校每天都在与大量的课程资料打交道——视频课件、教案文档、试卷题库、宣传素材。这些资料如何高效、安全地在老师之间流转?又如何分发到学生手中?个人网盘曾是许多机构的临时选择,但随着数据安全…...

西门子S7-1500采用原始算法写的飞剪程序, S7-1500的不支持凸轮同步,没办法做采用西...

西门子S7-1500采用原始算法写的飞剪程序, S7-1500的不支持凸轮同步,没办法做采用西门子的凸轮功能做飞剪程序, 必须用1500T才可以实现,由于1500T价格高,该程序通过研究飞剪算法,采用5次多项式计算刀轴的运动…...

敏捷协同工具选哪家?2026 年 6 大 Scrum 与 Kanban 工具测评

本文将深入对比6大敏捷协同平台:PingCode、Worktile、伙伴云、板栗看板、猪齿鱼、JNPF 在 2026 年,敏捷开发已不再局限于 IT 行业,各行各业都在追求高效协同。但面对市面上琳琅满目的敏捷协同平台,企业管理者常陷入纠结&#xff1…...

探索AI唇形同步的无限创意:sd-wav2lip-uhq解锁视频创作新维度

探索AI唇形同步的无限创意:sd-wav2lip-uhq解锁视频创作新维度 【免费下载链接】sd-wav2lip-uhq Wav2Lip UHQ extension for Automatic1111 项目地址: https://gitcode.com/gh_mirrors/sd/sd-wav2lip-uhq 在AI视频创作领域,sd-wav2lip-uhq作为Stab…...

前端 GraphQL:别再为 API 调用头疼了

前端 GraphQL:别再为 API 调用头疼了 什么是前端 GraphQL? GraphQL 是一种用于 API 的查询语言,也是一个满足你数据查询的运行时。别以为 GraphQL 只是一种新的 API 格式,它是前端数据获取的革命性解决方案。 为什么需要前端 Grap…...

前端 WebAssembly:别再抱怨 JavaScript 性能慢了

前端 WebAssembly:别再抱怨 JavaScript 性能慢了 什么是前端 WebAssembly? WebAssembly(简称 Wasm)是一种低级的编译目标,允许用 C、C、Rust 等语言编写的代码在浏览器中运行,性能接近原生应用。别以为 Web…...

10 款研发协同平台深度比较:从需求到测试到交付,哪款更顺手?

本文将深入对比 10 款主流研发一体化协同平台:PingCode、Worktile、Jira Confluence、GitLab、Azure DevOps、GitHub Enterprise、Linear、阿里云效、 CodeArts、CODING DevOps。现在很多企业做研发协同,真正难的不是缺工具,而是工具太多、太…...

实测对比:OpenCV微信QRCode vs ZXing二维码识别性能(附C++测试代码)

OpenCV微信QRCode与ZXing二维码识别引擎深度性能评测 二维码识别技术早已渗透到我们生活的方方面面,从移动支付到工业自动化,不同场景对识别引擎的性能要求差异显著。最近OpenCV 4.5.1整合了微信开源的QRCode识别模块,号称在速度和准确率上都…...

深入浅出讲解操作系统——实时调度

目录 ⏱️ 实时调度 第1课:什么是实时系统? 🎓 第一部分:专业学术讲解 1. 什么是实时系统? 2. 两种实时系统 🎓 第二部分:实时任务的关键概念 1️⃣ 截止时间(Deadline&#…...

深入解析Buffer在存储器电路设计中的关键作用:驱动能力与负载优化

1. 为什么Buffer是存储器电路设计的隐形英雄? 第一次接触存储器电路设计时,我和很多初学者一样,觉得Buffer(缓冲器)就是个简单的信号中转站。直到某次调试DDR4内存模块,时钟信号出现严重畸变,才…...

告别统计软件困境:虎贲等考 AI,让数据分析从 “硬核难题” 变 “轻松通关”

在学术研究与论文写作中,数据分析一直是横在学生与研究者面前的 “高门槛”。无论是本科毕业论文的基础统计,还是硕博期刊论文的实证检验,从数据清洗、模型构建到结果输出、图表制作,每一步都考验着专业能力。传统工具如 SPSS、St…...

射频新手避坑指南:功放输出匹配到4次谐波,这几个ADS Optim设置千万别搞错

射频功放设计实战:ADS Optim参数设置避坑手册 在射频功放设计中,输出匹配网络的设计质量直接影响着功放的效率、线性度和输出功率等关键指标。许多初学者在使用ADS(Advanced Design System)进行匹配电路优化时,常常陷入…...

轻榴浏览器:仅几MB的“轻功高手“,还你清净无扰的上网自由!

手机浏览器越来越臃肿——动辄几百MB的安装包,后台偷偷跑流量,刚搜个商品就收到精准广告推送,更别提那些关不掉的新闻资讯和弹窗骚扰……在这个"重口味"的浏览器时代,轻榴浏览器像一股清流逆势而来。这款体积小巧、基于…...

完整指南:5分钟掌握ImStudio实时GUI布局设计工具

完整指南:5分钟掌握ImStudio实时GUI布局设计工具 【免费下载链接】ImStudio GUI layout designer for Dear ImGui 项目地址: https://gitcode.com/gh_mirrors/im/ImStudio ImStudio是一款专为Dear ImGui开发者设计的实时GUI布局设计工具,它通过可…...

Unity WebGL实战:用AVProVideo搞定海康监控M3U8流播放(附XChart数据可视化技巧)

Unity WebGL实战:AVProVideo播放海康M3U8监控流与XChart数据可视化全解析 在数字孪生和安防监控领域,Unity WebGL项目集成实时视频流的需求日益增长。海康威视作为行业领先的监控设备供应商,其M3U8视频流格式在WebGL环境下的播放一直是个技术…...

Sentaurus TCAD实战——TCL脚本自动化仿真流程设计

1. 为什么需要TCL自动化仿真流程 第一次接触Sentaurus TCAD时,我像大多数工程师一样,在图形界面里点点鼠标完成仿真。但连续熬夜三天后,我发现每次修改参数都要重复点击20多个按钮,仿真100组参数意味着2000次机械操作。这种重复劳…...

鸿蒙ADB无线调试实战:从“积极拒绝”到稳定连接的避坑指南

1. 鸿蒙ADB无线调试的常见痛点 第一次尝试鸿蒙系统的ADB无线调试时,我遇到了那个经典的错误提示:"cannot connect to 192.168.1.101:5555: 由于目标计算机积极拒绝,无法连接。(10061)"。这个错误让我折腾了整整一个下午&#xff0c…...