跳至正文
老丹的足迹 —— 代码写给机器,游记写给自己,感悟写给时间
老丹的足迹 老丹的足迹
老丹的足迹 老丹的足迹
  • 首页
  • 示例页面
  • 首页
  • 示例页面
老丹的足迹 老丹的足迹
老丹的足迹 老丹的足迹
  • 首页
  • 示例页面
  • 首页
  • 示例页面

用 Nginx 搭建原始文件列表(GNU 风格)

你是否曾经访问过像 https://ftp.gnu.org/gnu/ 这样的页面?它用最朴素的方式展示了一个目录下的所有文件和文件夹:只有文件名、大小、修改时间三列,没有任何多余的装饰。这就是 Nginx 的目录列表功能(autoindex)最原汁原味的呈现。

本文将带你从安装 Nginx 开始,在几分钟内搭建一个同样风格的文件列表服务,并配置 HTTPS 和专属域名。

一、Nginx 安装与模块说明

1.1 安装 Nginx

Ubuntu/Debian:

sudo apt update
sudo apt install nginx -y

CentOS/RHEL/Fedora:

# 先安装 EPEL 仓库(CentOS 需要)
sudo yum install epel-release -y
sudo yum install nginx -y

安装完成后,启动并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

1.2 关于模块:不需要额外安装

生成目录列表的核心模块是 ngx_http_autoindex_module,它是 Nginx 的内置模块,编译时默认自动加载,无需额外安装。

很多教程提到编译安装或动态加载模块,是针对非内置模块(如 ngx-fancyindex 美化模块)。我们使用的是 Nginx 原生功能,用包管理器安装后即可直接使用,不需要任何额外操作。

1.3 配置文件目录结构(Ubuntu/Debian)

目录/文件说明
/etc/nginx/nginx.confNginx 主配置文件
/etc/nginx/sites-available/所有站点配置文件存放处
/etc/nginx/sites-enabled/已启用的站点配置(软链接)
/var/www/html/默认网站根目录
/var/log/nginx/access.log访问日志
/var/log/nginx/error.log错误日志

二、准备文件目录

sudo mkdir -p /var/www/files

把你要分享的文件放入这个目录。root 指向该目录后,Nginx 只会展示这个目录及其子目录下的内容。

三、创建 Nginx 站点配置

配置文件命名为 ftplist,放在 /etc/nginx/sites-available/ 目录下:

sudo nano /etc/nginx/sites-available/ftplist

填入以下内容:

# HTTP 自动跳转 HTTPS
server {
    listen 80;
    server_name ftp.example.com;                     # 改成你的实际域名
    return 301 https://$server_name$request_uri;
}

# HTTPS 主服务
server {
    listen 443 ssl http2;
    server_name ftp.example.com;                     # 改成你的实际域名

    # SSL 证书
    ssl_certificate /etc/letsencrypt/live/ftp.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ftp.example.com/privkey.pem;

    root /var/www/files;

    location / {
        autoindex on;              # 开启目录列表
        autoindex_exact_size on;   # 精确字节数(GNU 风格)
        autoindex_localtime on;    # 显示服务器本地时间
    }
}

各指令说明

指令说明推荐值
autoindex开启或关闭目录列表功能,默认 offon
autoindex_exact_sizeon:精确显示文件字节数;off:显示为 KB、MB 等易读格式on(GNU 风格)
autoindex_localtimeon:显示服务器本地时间;off:显示 UTC 时间on

注意:如果目录下存在 index.html 文件,Nginx 会优先显示它而不是目录列表。需要删除或重命名该文件。

四、启用配置

# 创建软链接,启用站点
sudo ln -s /etc/nginx/sites-available/ftplist /etc/nginx/sites-enabled/

# 检查配置语法
sudo nginx -t

# 重载 Nginx
sudo systemctl reload nginx

五、配置 HTTPS(Let’s Encrypt)

# 安装 Certbot
sudo apt update
sudo apt install certbot python3-certbot-nginx

# 获取证书并自动配置 Nginx
sudo certbot --nginx -d ftp.example.com   # 改成你的实际域名

按提示操作即可。Certbot 会自动修改 Nginx 配置启用 HTTPS,并设置自动续期任务。

六、验证

访问 https://ftp.example.com(改成你的域名),你将看到类似 GNU 的原始文件列表:

Index of /

Name                    Last modified    Size
Parent Directory                         -
file1.zip              2026-07-27 10:00  1234567
file2.tar.gz           2026-07-26 15:30  456789
folder/                2026-07-25 09:00   -

和 GNU 一模一样,就是这个味儿。

七、常见问题排查

问题可能原因解决方案
访问显示 403 Forbiddenautoindex 未开启或目录权限不足确认有 autoindex on;;执行 sudo chmod 755 /var/www/files
页面空白或显示其他内容目录下存在 index.html删除或重命名 index.html,或配置 index "";
中文文件名乱码字符集未设置在 location / 中添加 charset utf-8;
HTTPS 证书报错证书未获取或已过期执行 sudo certbot renew --dry-run 测试

总结

用 Nginx 搭建 GNU 风格的文件列表,核心就几步:

  1. 安装 Nginx:包管理器一行命令搞定,autoindex 模块内置,不需要额外安装任何东西
  2. 开启 autoindex on:让 Nginx 生成原始目录列表
  3. 配置 HTTPS:用 Let’s Encrypt 免费证书保障安全
  4. 绑定域名:用 ftp.example.com 这样的子域名方便访问

不需要 fancyindex,不需要主题,不需要任何美化。 这就是 GNU 官网使用的方案——干净、简洁、高效。

作者

老丹

关注我
其他文章
上一个

Certbot 详解:HTTPS 自动化的基石与完全指南

下一个

在 Ubuntu 中使用 Certbot 的操作指南

关于博主

    老丹是一名C/C++后台开发工程师,信奉“无抽象不设计,无性能不生产”。

  • 技术栈:Modern C++、Linux环境编程、多线程/并发、网络编程等。
  • 信条:能用constexpr解决的问题绝不拖到运行时,能靠RAII避免的泄漏绝不写析构。
  • 正在填坑:从解封装到渲染的C++全链路实现,正在驯服FFmpeg与H.264/H.265。
  • 输出原则:这里的每一段代码都经过-Wall -Wextra -Werror -O2的洗礼。

近期文章

  • Linux系统的安全基石:深入理解可插拔认证模块(PAM) 2026年7月27日
  • vsftpd 完全指南:从核心原理到Docker容器化部署 2026年7月27日
  • 互联网的”导航”安全卫士:深入解读DNSSEC 2026年7月27日
  • Ubuntu DNS 配置完全指南 2026年7月27日
  • 在 Ubuntu 中使用 Certbot 的操作指南 2026年7月27日

文章分类

  • C/C++开发 (13)
  • Docker容器 (3)
  • Linux工具包 (10)
  • Linux服务配置 (33)
  • Linux系统 (10)
  • OpenWrt路由 (2)
  • Shell脚本 (3)
  • 安防技术 (4)
  • 数据安全 (30)
  • 网络协议 (17)
  • 计算机理论 (22)
联系我们:📍 地址:中国·广东省深圳市   |   ✉️ 邮箱:support@tanglinux.com   |   💬 QQ:870866607
版权所有:老丹的足迹粤ICP备2026061170号-1       公安备案图标 粤公网安备44030002013274号