本地快速启动 HTTPS 文件服务器

在本地开发过程中,有时需要一个支持 HTTPS 的静态文件服务器。本文介绍如何使用 Caddy 和 mkcert 快速搭建一个安全的本地 HTTPS 文件服务器。

准备工作

两个核心工具:

  • Caddy:一款现代化的 Web 服务器,原生支持自动 HTTPS。
  • mkcert:一个简单易用的工具,用于在本地生成可信的自签名证书。

这两个工具配合使用,可以在无需公网域名或复杂配置的情况下,快速为 localhost 启用 HTTPS。

步骤一:安装并配置本地 CA

首先,使用 mkcert 安装一个本地可信的证书颁发机构(CA):

1
mkcert -install

该命令会在你的系统和浏览器中安装一个本地 CA,使后续生成的证书被操作系统和浏览器信任,避免出现安全警告。

步骤二:生成本地证书

接下来,为常见的本地地址生成证书:

1
mkcert localhost 127.0.0.1 ::1

执行成功后,当前目录将生成两个文件:

  • localhost+2.pem:证书文件
  • localhost+2-key.pem:私钥文件

注:+2 表示证书包含两个备用名称(SANs),即 127.0.0.1::1(IPv6 回环地址)。

步骤三:配置 Caddy

创建一个名为 Caddyfile 的配置文件,内容如下:

1
2
3
4
5
6
7
8
9
10
https://localhost:443 {
root * ./ # 设置根目录为当前目录
tls localhost+2.pem localhost+2-key.pem # 指定本地证书和私钥
file_server # 启用静态文件服务

@html { # 定义匹配 HTML 文件的条件
path *.html
}
header @html Content-Type "text/html; charset=utf-8" # 为 HTML 文件设置正确的字符编码
}

此配置启用了 HTTPS 服务,监听 localhost:443,并正确设置了 HTML 文件的响应头以支持 UTF-8 编码,确保中文等字符能正常显示。

步骤四:启动服务器

保存配置后,在终端运行:

1
caddy run

Caddy 将根据 Caddyfile 启动 HTTPS 服务器。打开浏览器访问 https://localhost,即可查看本地文件,且连接为绿色安全状态。

总结

通过 mkcert + Caddy 的组合,我们仅需几条命令和简单配置,就能快速拥有一个支持 HTTPS 的本地文件服务器。这种方法特别适用于需要测试 HTTPS 特性、混合内容限制或安全上下文 API(如 Web Audio、Geolocation 等)的前端开发场景。