后端登录实现(使用 Caddy 搭建带登录认证的文件浏览服务)

后端登录实现(使用 Caddy 搭建带登录认证的文件浏览服务)
使用 Caddy 搭建带登录认证的文件浏览服务

本文档将指导您在 CentOS(或其他 Linux 发行版)上安装 Caddy,并配置一个通过 Web 浏览指定文件夹的服务,同时启用 HTTP 基本认证(用户名+密码),确保只有授权用户可以访问。

目录

  1. Caddy 简介
  2. 安装 Caddy
  3. 2.1 从官网下载二进制(通用方法)
  4. 2.2 使用包管理器安装(CentOS)
  5. 2.3 Windows 安装
  6. 生成密码哈希
  7. 编写 Caddyfile 配置文件
  8. 运行 Caddy
  9. 5.1 前台运行(测试)
  10. 5.2 后台运行
  11. 5.3 作为系统服务运行(生产环境)
  12. 防火墙设置(CentOS)
  13. 验证访问
  14. 常见问题与排查

1. Caddy 简介

Caddy 是一个用 Go 编写的强大、可扩展的 Web 服务器,以其自动 HTTPS、配置简单和默认安全而闻名。它无需复杂的配置即可快速提供静态文件服务、反向代理等。Caddy 的配置文件(Caddyfile)语法简洁,易于阅读和维护。

2. 安装 Caddy

2.1 从官网下载二进制(通用方法)

适用于任何 Linux 发行版(包括 CentOS)以及 Windows/macOS。

# 下载最新版 Caddy(Linux amd64)或者手动下载地址:https://caddyserver.com/downloadcurl -OL "https://caddyserver.com/api/download?os=linux&arch=amd64"mv caddy_linux_amd64 caddychmod +x caddysudo mv caddy /usr/local/bin/

验证安装:

后端登录实现(使用 Caddy 搭建带登录认证的文件浏览服务)

caddy version

2.2 使用包管理器安装(CentOS)

Caddy 提供了官方 yum 仓库,方便通过包管理器安装和管理。

# 添加 Caddy 仓库sudo dnf install 'dnf-command(copr)'sudo dnf copr enable @caddy/caddysudo dnf install caddy

安装后,Caddy 二进制位于 /usr/bin/caddy,并已配置 systemd 服务。

2.3 Windows 安装

从 Caddy 下载页面 选择 Windows 平台,下载可执行文件(例如 caddy_windows_amd64.exe)。将文件重命名为 caddy.exe 并放入一个目录(如 D:\caddy),然后将该目录添加到系统 PATH 环境变量,或直接在命令行中定位到该目录运行。

3. 生成密码哈希

Caddy 的 basicauth(或 basic_auth)指令需要 bcrypt 格式的密码哈希。使用 Caddy 自带的工具生成:

caddy hash-password

根据提示输入密码,确认后终端会输出类似:

$2a$14$I6/8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8

复制该哈希值,稍后将用于配置文件中。

4. 编写 Caddyfile 配置文件

创建一个名为 Caddyfile(无扩展名)的文件,内容如下:

:8080 {    root * /path/to/your/folder   # 请替换为实际要共享的文件夹绝对路径    file_server browse    basic_auth {        用户名 $2a$14$...   # 替换为第3步生成的密码哈希    }}

说明:

  • :8080:Caddy 将监听 8080 端口(可改为其他端口,如 :80),但不能是2019。
  • root *:指定网站根目录,* 表示对所有路径生效。
  • file_server browse:启用静态文件服务,并允许目录浏览(即访问文件夹时显示文件列表)。
  • basic_auth:启用基本认证,大括号内每行定义一个用户,格式为 用户名 密码哈希。

注意:早期版本使用 basicauth,现在推荐使用 basic_auth(带下划线)。如果使用 basicauth 会收到弃用警告,但功能仍正常。

5. 运行 Caddy

5.1 前台运行(测试)

在 Caddyfile 所在目录执行:

caddy run

此时 Caddy 在前台运行,日志直接输出到终端。按 Ctrl+C 可停止服务。适合测试配置是否正确。

5.2 后台运行

如果希望 Caddy 在后台运行,使用:

caddy start

停止服务:

caddy stop

5.3 作为系统服务运行(生产环境)

如果通过包管理器安装,Caddy 已经配置为 systemd 服务。您可以直接启动并设置开机自启。

sudo systemctl start caddysudo systemctl enable caddy

默认情况下,systemd 服务会读取 /etc/caddy/Caddyfile。如果您使用自定义路径,需要编辑服务文件或通过 --config 参数指定。

若要重新加载配置(不中断服务):

sudo systemctl reload caddy# 或sudo caddy reload --config /etc/caddy/Caddyfile

6. 防火墙设置(龙蜥操作系统 Anolis OS)

开放 Caddy 监听的端口(例如 8080),以便其他设备访问。

使用 firewalld(Anolis OS 7/8/9 默认)

# 开放 8080 端口(TCP)sudo firewall-cmd --permanent --add-port=8080/tcpsudo firewall-cmd --reload# 验证sudo firewall-cmd --list-ports

使用 iptables(CentOS 6 或未使用 firewalld)

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPTsudo service iptables save   # 保存规则

注意:如果服务器在云上(如阿里云、AWS),还需在云控制台的安全组中开放对应端口。

7. 验证访问

在浏览器中输入 http://服务器IP:8080(或 http://localhost:8080 本地测试)。浏览器会弹出登录窗口,输入配置的用户名和密码后,即可看到指定文件夹的文件列表。

如果文件夹中没有 index.html 文件,并且 browse 选项已开启,页面会显示目录索引,允许点击进入子目录或下载文件。

登陆界面

文件浏览


8. 常见问题与排查

Q1: 浏览器显示“Hello 大家好 测试”而不是文件列表?

  • 原因:指定目录下存在 index.html 文件,Caddy 优先返回该文件。
  • 解决:删除或重命名 index.html,或将其移到其他位置。

Q2: 访问时提示 403 Forbidden?

  • 原因:文件权限不足,或 Caddy 无权读取该目录。
  • 解决:确保运行 Caddy 的用户(如 caddy 系统用户)对目录有读取权限:
sudo chown -R caddy:caddy /path/to/folder sudo chmod -R 755 /path/to/folder

Q3: Caddy 启动失败,提示“address already in use”?

  • 原因:端口被其他程序占用,或与 Caddy 管理 API 端口(默认为 2019)冲突。
  • 解决:更换配置文件中的端口(如改为 :8081),或在全局配置中修改管理 API 地址:
  • caddyfile
  • { admin off # 禁用管理 API(仅当不需要动态配置时) }

Q4: 如何修改密码?

  • 重新生成密码哈希,替换 Caddyfile 中的对应行,然后重载配置:caddy reload。

Q5: 如何仅保护特定子路径?

在 basic_auth 后加上路径,例如:

basic_auth /private/* {    username $2a$14$...}

Q6: Caddy 日志在哪里?

  • 前台运行直接输出到终端。
  • 作为 systemd 服务,日志可通过 journalctl -u caddy 查看。
  • 也可以在 Caddyfile 中配置日志输出到文件:
  • caddyfile
  • log { output file /var/log/caddy/access.log }

通过以上步骤,您已经成功搭建了一个安全、轻量的文件浏览服务。Caddy 的自动 HTTPS 和简洁配置使其成为个人和小型团队共享文件的理想选择。

💻 配套实训环境与动手练习

本文涉及的相关技术指令、开发环境与工具链已内置在边学边练在线实验室中,无需繁琐安装配置,随时在浏览器中实践体验:

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

最新文章

热门文章

本栏目文章