前言

跨平台文件同步利器:使用Caddy搭建WebDav实现多设备间的无缝文件共中讲了如何使用 caddy 搭建 WebDav 服务,今天就来学一下如何在 caddy 中搭建静态文件服务器。

静态服务器

搭建一个静态服务器需要使用到 file_server 这个插件,这个插件是内置的,只要安装好了 caddy 就能够直接使用。

来编写 Caddyfile 文件

1
2
3
4
:80

root * ~/www # 站点根目录
file_server

编写好了使用 caddy start --config ./Caddyfile 来启动 caddy

然后在浏览器中输入 127.0.0.1 就能访问到 ~/www/index.html 的文件了

显示文件列表

在上一步中我们实现了一个简单的静态文件服务器,默认会访问根目录的 index.html 文件,如果根目录下没有这个文件那么访问会报错,会提示找不到这个文件。

这时候我希望可以查看这个文件夹下的文件列表,而不是报错,这时候就需要通过添加 browse 参数来显示文件列表,如下所示

1
2
3
4
:80

root * ~/www
file_server browse

这时候 www 目录下没有 index.html 就会把目录下的所有文件给列出来了。

增加密码验证

上面两步实现了一个静态文件服务器和展示文件列表,但是这样不安全。

所以希望能够加入账号和密码进行验证,只有验证成功才能访问。

这时候可以通过配置 basicauth 这个插件来达到安全访问的目的。如下所示

1
2
3
4
5
6
7
8
:80

root * ~/www
file_server browse

basicauth / {
    username pwd
}

其中密码需要使用 caddy hash-password username 来生成,把生成好的密码替换掉 Caddyfile 中的 pwd

接着重新运行 caddy ,然后访问就会提示你需要输入密码了。

简单的命令行操作

有时候只是简单的提供一下文件访问的功能,不想写 Caddyfile 可以通过命令行来快速提供服务

  • caddy file-server 会以当前目录作为站点的根目录运行静态服务器
  • caddy file-server --listen :8080 指定运行在 8080 端口
  • caddy file-server --browse 支持显示文件列表
  • caddy file-server --root ~/www 指定网站的根目录

总结

本文讲了如何使用 caddy 搭建一个静态服务器,并且配置显示文件列表、密码验证和命令行的简单操作。

可以看到在 caddy 中搭建一个静态服务器还是非常简单方便的。

参考

静态文件快速入门 — Caddy v2中文文档