Skip to content

24.3 Caddy Web 服务器

Caddy 是一款以 Go 语言编写的开源 Web 服务器,提供安全的 Web 服务。

24.3.1 安装 Caddy

使用 pkg 包管理器安装:

sh
# pkg install caddy

或使用 Ports 方式安装:

sh
# cd /usr/ports/www/caddy/
# make install clean

安装完成后,可查看 Caddy 安装包的说明文档,了解必要的配置和注意事项:

sh
# pkg info -D caddy

24.3.2 配置 Caddy

目录结构:

sh
/
├── usr
   └── local
       ├── etc
   ├── caddy
   └── Caddyfile              # Caddy 主配置文件
   └── rc.d
       └── caddy                  # Caddy RC 服务脚本
       └── www
           └── caddy
               └── index.html             # Caddy 测试页面
└── var
    ├── log
   └── caddy
       └── caddy.log                  # Caddy 运行时日志
    ├── db
   └── caddy
       ├── data
   └── caddy                  # 自动 SSL 证书存储
       └── config
           └── caddy                  # 配置自动保存
    └── run
        └── caddy
            └── caddy.sock                 # 管理端点 Unix 套接字

注意

由于非特权用户无法绑定 443 端口,将产生错误 listen tcp :443: bind: permission denied

安装上文提到的 security/portacl-rc,执行以下命令:

sh
# pkg install security/portacl-rc
# sysrc portacl_users+=www
# sysrc portacl_user_www_tcp="http https"
# sysrc portacl_user_www_udp="https"
# service portacl enable
# service portacl start

配置服务,请按顺序执行以下命令:

sh
# service caddy enable # 请按顺序执行
# service caddy start # 请按顺序执行
# service caddy stop # 请按顺序执行
# sysrc caddy_user=www caddy_group=www
# chown -R www:www /var/db/caddy /var/log/caddy /var/run/caddy

新建测试页面,执行以下命令创建目录:

sh
# mkdir -p /usr/local/www/caddy/

编辑 /usr/local/www/caddy/index.html 文件,写入测试内容:

html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>FreeBSD 中文社区欢迎你!</title>
</head>
<body>
    <h1 style="text-align: center;">Hello World !</h1>
</body>
</html>

启动 Caddy 服务:

sh
# service caddy start
Starting caddy... done
Log: /var/log/caddy/caddy.log

在本机打开 https://localhost/,可查看测试页面:

Caddy FreeBSD

24.3.2.1 参考文献

  • OVVV. Caddy 安装与使用教程[EB/OL]. [2026-03-25]. https://blog.ovvv.top/posts/f3ac7ef6/. 本节测试页面的 HTML 来自此处,提供 FreeBSD 上 Caddy 的配置实践示例。