惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
NISL@THU
NISL@THU
S
Secure Thoughts
P
Palo Alto Networks Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
AWS News Blog
AWS News Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
L
LINUX DO - 最新话题
L
LINUX DO - 热门话题
O
OpenAI News
C
Cyber Attacks, Cyber Crime and Cyber Security
Google DeepMind News
Google DeepMind News
Schneier on Security
Schneier on Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
www.infosecurity-magazine.com
www.infosecurity-magazine.com
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
Forbes - Security
Forbes - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Securelist
S
Security Affairs
博客园 - 三生石上(FineUI控件)
V2EX - 技术
V2EX - 技术
Apple Machine Learning Research
Apple Machine Learning Research
D
Darknet – Hacking Tools, Hacker News & Cyber Security
人人都是产品经理
人人都是产品经理
IT之家
IT之家
T
Threat Research - Cisco Blogs
博客园 - 司徒正美
J
Java Code Geeks
C
Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
N
News and Events Feed by Topic
P
Privacy International News Feed
V
Visual Studio Blog
博客园_首页
量子位
C
Cybersecurity and Infrastructure Security Agency CISA
Y
Y Combinator Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
The Exploit Database - CXSecurity.com
Security Archives - TechRepublic
Security Archives - TechRepublic
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
N
News and Events Feed by Topic
D
DataBreaches.Net
The Cloudflare Blog

晚花行乐

马克卡尼在2026年达沃斯论坛上的讲话(阅读材料) | 晚花行乐 鸡娃如何用力才是恰到好处 | 晚花行乐 读万卷书,行万里路的辩证关系 | 晚花行乐 反对培训机构掐尖招生 | 晚花行乐 小泽和建国会谈最后10分钟全文(阅读材料) | 晚花行乐 来看看 DeepSeek 怎么鸡娃 | 晚花行乐 谈谈基本功 | 晚花行乐 惠普 ProDesk SFF PC 各系列参数对比 | 晚花行乐 解决瘦客户机上安装 Debian 12 启动失败问题 | 晚花行乐 意拾喻言:老外写的文言文 | 晚花行乐 笠翁对韵中的典故(十三元) | 晚花行乐 谈谈中考取消四小门 | 晚花行乐 亚马逊云科技产品免费试用攻略(3) - 对象存储服务 | 晚花行乐 在 Windows 10 LTSC 版本上安装 WSL2 | 晚花行乐 Debian 12 的常用配置项 | 晚花行乐 在 Debian 12 上安装 Nvidia 显卡驱动程序 | 晚花行乐 解决 Debian 12 关机失败问题 | 晚花行乐 解决 VS Code 自动更新版本后卡在连接界面 | 晚花行乐 观看巴黎奥运会有感 | 晚花行乐 在 Windows10 上安装惠普旧打印机驱动程序 | 晚花行乐 欢迎关注公众号:晚花行乐 | 晚花行乐 如何编写拼写检查器 | 晚花行乐 亚马逊云科技产品免费试用攻略(2) - 云服务器 | 晚花行乐 Pandas 中 axis 参数的理解(附实例) | 晚花行乐 我打算命个名,叫什么什么 Manager | 晚花行乐 上海武康路历史建筑一览 | 晚花行乐 Python 实现简单的数学表达式解析并处理 | 晚花行乐 观看马拉松的感悟 | 晚花行乐 Python 保存 Cookies 到文件并再次读取 | 晚花行乐 如何为 Hugo 静态网站添加评论功能 | 晚花行乐 Linux 共享打印服务 CUPS | 晚花行乐 如何为 Hugo 静态网站添加搜索功能 | 晚花行乐 解决 CSV 文件的第一列不能解析 | 晚花行乐 亚马逊云科技产品免费试用攻略(1) - 注册账户 | 晚花行乐 第二幕 Atma 的闲聊 | 晚花行乐 第二幕野蛮人的语音 | 晚花行乐 古入声和普通话平声对照 | 晚花行乐 第一幕的背景音乐 | 晚花行乐 第二幕亚马逊的语音 | 晚花行乐 第一幕的亚马逊的语音 | 晚花行乐 第一幕的野蛮人的语音 | 晚花行乐 MacOS 的彩蛋:Here's to the crazy ones | 晚花行乐 笠翁对韵的基本知识 | 晚花行乐 笠翁对韵中的典故(十二文) | 晚花行乐 笠翁对韵中的典故(十一真) | 晚花行乐 笠翁对韵中的典故(十灰) | 晚花行乐 杭州景点的楹联 | 晚花行乐 adb keycode 大全 | 晚花行乐 Scikit-learn 学习笔记(0)名词术语 | 晚花行乐 Scikit-learn 学习笔记(3)监督学习的例子 | 晚花行乐 SQLite 文档的学习笔记(1)长期支持计划 | 晚花行乐 SQLite 文档的学习笔记(2)测试方法 | 晚花行乐 笠翁对韵中的典故(九佳) | 晚花行乐 Ansible 如何检查一个程序的版本 | 晚花行乐 Ansible 如何检查一个文件夹是否存在 | 晚花行乐 pip 配置文件详解 | 晚花行乐 Ansible 如何检查一个URL是否正常 | 晚花行乐 Ansible 如何修改 iptables 规则 | 晚花行乐 Ansible 指定 playbook 运行的主机 | 晚花行乐 Ansible 如何清空文件夹 | 晚花行乐 Ansible 如何在本机执行命令 | 晚花行乐 笠翁对韵中的典故(八齐) | 晚花行乐 Python 中 Defaultdict 的理解 | 晚花行乐 《伊索寓言》电子书 | 晚花行乐 菲伯尔钢琴伴奏:第二册 | 晚花行乐 Python 的 Keyword-Only Arguments 理解 | 晚花行乐 Python 的 函数参数处理机制 | 晚花行乐 瓦瑞夫在第一幕的闲聊 | 晚花行乐 瓦瑞夫在第一幕的任务提示 | 晚花行乐 第一幕的女巫语音 | 晚花行乐 《Fluent Python》 读书笔记:文本和字节序列 | 晚花行乐 第一幕的罗格语音 | 晚花行乐 第一幕的圣骑士语音 | 晚花行乐 第一幕的男巫语音 | 晚花行乐 第一幕的旁白 | 晚花行乐 第一幕的恶魔 | 晚花行乐 Python 中 Element Tree 的理解 | 晚花行乐 笠翁对韵中的典故(七虞) | 晚花行乐 笠翁对韵中的典故(五微) | 晚花行乐 笠翁对韵中的典故(六鱼) | 晚花行乐 笠翁对韵中的典故(一东) | 晚花行乐 笠翁对韵中的典故(二冬) | 晚花行乐 笠翁对韵中的典故(三江) | 晚花行乐 笠翁对韵中的典故(四支) | 晚花行乐 姜太公钓鱼 | 晚花行乐 武王建立周朝 | 晚花行乐 大禹治水 | 晚花行乐 尧舜让位 | 晚花行乐 黄帝战蚩尤 | 晚花行乐 上下五千年-精简版 | 晚花行乐 成功修复鼠标按键 | 晚花行乐 横向的Word文档怎么加页眉页脚 | 晚花行乐 商标通用化的故事:商标代替商品名 | 晚花行乐 搜索空文件夹的批处理程序 | 晚花行乐 Sn0wbreeze不能运行? | 晚花行乐 天线的驻波比 | 晚花行乐 天线参数:增益Gain | 晚花行乐 天线参数:方向图Radiation pattern | 晚花行乐 本拉登别墅的Google Earth坐标 | 晚花行乐 宜家帕克斯(PAX)衣柜的拼装过程 | 晚花行乐
用 nginx 搭建文件下载服务器 | 晚花行乐
2018-03-23 · via 晚花行乐

有时候临时需要搭建一个文件服务器、提供文件目录浏览和文件下载功能,有一种比较简便的方法是使用 nginx 的 目录列表 功能,由 ngx_http_autoindex_module 提供。

概述

以 docker 形式启动 nginx,让安装、部署更加的方便,而且不会对原有系统造成影响,十分适合临时搭建的任务。

本文的大致步骤如下:

  1. 启动 nginx
  2. 准备 nginx 的配置文件
  3. 准备本地的下载目录
  4. 使用 docker 启动 nginx

启动 nginx

用docker-compose,只需将各个参数写进配置文件,就可以方便的创建并运行容器。

编辑一个名为 docker-compose.yaml 的文件,内容如下:

# docker-compose.yaml
version: '2'
services:
  nginx:
    image: nginx:1.13
    ports:
      - "8080:80" 

上面各个配置项的解释:

image

nginx镜像来源,仅仅写nginx表示从官方dockerhub下载

ports

8080:80 表示将宿主机的8080端口转发到容器内的80端口,也就是对外的8080端口提供服务,可以按需修改。冒号后面的80,需要和 nginx.conf 里的 listen 端口保持一致。默认是80

在上面yaml文件所在的目录下执行命令

$ docker-compose up -d

就能创建并启动nginx容器。用浏览器访问服务器的8080端口,如果看到下面的界面,说明 docker 和 nginx 都已经正常启动。

准备 nginx 配置文件

简单的 nginx.conf 配置文件例子如下

# nginx.conf
user root;
worker_processes 1;
events {
  worker_connections 1024;
}
http {
  server {
    listen 80;
    server_name your.domain.com;
    root /usr/share/nginx/files;
    charset utf-8;
    location / {
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
    }
}

上面各个配置项的解释:

server_name

服务器的域名,如果直接用IP访问,该项可以省略

root

静态文件的本地根路径,可以保持该默认值:/usr/share/nginx/files,后面会利用 docker 的特性,将本地目录映射为此路径。

charset

编码设置为 UTF-8 ,为了使中文文件名能正常显示。

autoindex

开启文件列表功能的开关,默认为off,需要明确地打开,才能启用文件列表功能。

autoindex_exact_size

默认为 on,表示列出文件实际大小,单位为字节,off 表示自动显示K,M,G等,方便查看。举个例子如下表,显示某个文件的显示方式不同:

autoindex_exact_size显示值
on1476267045
off1.4G

autoindex_localtime

列出文件的时间,默认为off,表示采用默认UTC时区,on 表示采用nginx 的系统当地时区。

autoindex_localtime显示值
on系统当地时间
offUTC时间

应用 nginx 配置文件

接下来要把 上面编辑好的 nginx.conf 应用在启动的容器里,只需要将这个文件放到 docker-compose.yaml 同一目录下,然后在 docker-compose.yaml 里加入一行 volume 设置:

# docker-compose.yaml
version: '2'
services:
  nginx:
    image: nginx:1.13
    ports:
      - "8080:80"
    volumes:
      #映射 nginx 配置文件
      - "./nginx.conf:/etc/nginx/nginx.conf"  

指定本地路径

假设你本地的根路径为:

/path/to/local/root

只需要在 docker-compose.yaml 里再加入一行 volume 设置:

# docker-compose.yaml
version: '2'
services:
  nginx:
    image: nginx:1.13
    ports:
      - "8080:80"
    volumes:
      - "./nginx.conf:/etc/nginx/nginx.conf"
      #指定本地路径
      - "/path/to/local/root:/usr/share/nginx/files" 

修改 nginx 的时区

nginx 容器默认是 UTC 时区,所以即使按照 这一节的提示 ,在 nginx.conf 里,指定了 autoindex_localtime on ,页面上仍然会显示 UTC 时间。所以需要修改 nginx 容器内的时区。

假如我们准备将时区修改为 Asia/Shanghai

在 docker-compose.yaml 里再加入一行 command 设置,可以覆盖原来的启动命令:

# docker-compose.yaml
version: '2'
services:
  nginx:
    image: nginx:1.13
    ports:
      - "8080:80"
    volumes:
      - "./nginx.conf:/etc/nginx/nginx.conf"
      - "/path/to/local/root:/usr/share/nginx/files"
    command:
      sh -c "ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone && nginx -g 'daemon off;'"

重启 nginx 容器

执行下列命令即可重启 nginx 容器

$ docker-compose up -d --force-recreate

最终效果

最终效果如下:

续:修改页面的外观

上面最终效果过于平淡,不仅白底黑字,而且访问过的链接还会变色。 nginx 第三方的模块 Fancy Index , 可以给下载页面增添一些样式。

各位读后有什么想法,请在下方留言吧!如果对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

精彩评论