首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx再见!Caddy你好!Caddy 无需配置自动添加 HTTPS,我真的爱了!

Nginx再见!Caddy你好!Caddy 无需配置自动添加 HTTPS,我真的爱了!

作者头像
萌萌哒草头将军
发布2025-03-29 14:32:39
发布2025-03-29 14:32:39
51900
代码可运行
举报
文章被收录于专栏:前端框架前端框架
运行总次数:0
代码可运行

前言

在当今的网站部署中,HTTPS 已成为标配而非可选功能。

传统方式配置 HTTPS 需要手动申请证书、配置 Nginx 等复杂步骤,

Caddy 的简洁配置和自动化 HTTPS 使其成为静态网站部署的理想选择。

下面是我在我的服务器上使用 Caddy 部署静态博客,并实现自动 HTTPS 配置的过程!

安装 Caddy

安装 Caddy

我使用的 curl下载的 Caddy

代码语言:javascript
代码运行次数:0
运行
复制
sudo curl -o /usr/local/bin/caddy "`HTTPS`://caddyserver.com/api/download?os=linux&arch=amd64"

因为下载的命令下载一直超时

代码语言:javascript
代码运行次数:0
运行
复制
yum install caddy -y

所以还需要给权限

代码语言:javascript
代码运行次数:0
运行
复制
sudo chmod +x /usr/local/bin/caddy
验证安装
代码语言:javascript
代码运行次数:0
运行
复制
caddy version
# 应输出类似 v2.6.4 的版本号

准备博客文件

创建博客目录
代码语言:javascript
代码运行次数:0
运行
复制
sudo mkdir -p /var/www/blogs
设置权限
代码语言:javascript
代码运行次数:0
运行
复制
sudo chown -R caddy:caddy /var/www/blogs
sudo chmod -R 755 /var/www/blogs
上传博客文件

将你的静态博客文件(如 Hugo、Hexo 生成的 public 目录内容)上传到 /var/www/blogs

配置 Caddy

编辑配置文件
代码语言:javascript
代码运行次数:0
运行
复制
sudo vi /etc/caddy/Caddyfile
写入以下配置
代码语言:javascript
代码运行次数:0
运行
复制
# 替换为你的真实域名
yourdomain.com {
    root * /var/www/blogs
    file_server
    encode gzip
    
    # 可选:配置日志
    log {
        output file /var/log/caddy/access.log
        format json
    }
}

启动服务

创建 Systemd 服务文件
代码语言:javascript
代码运行次数:0
运行
复制
vi /etc/systemd/system/caddy.service
代码语言:javascript
代码运行次数:0
运行
复制
[Unit]
Description=CaddyWebServer
After=network.target

[Service]
ExecStart=/usr/bin/caddyrun--config/etc/caddy/Caddyfile--adaptercaddyfile
ExecReload=/usr/bin/caddyreload--config/etc/caddy/Caddyfile
Restart=always
User=caddy
Group=caddy
WorkingDirectory=/etc/caddy
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target
启动 Caddy
代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl restart caddy
设置开机启动
代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl enable caddy
检查状态
代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl status caddy
# 应显示 active (running)

防火墙配置

开放端口
代码语言:javascript
代码运行次数:0
运行
复制
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
验证防火墙
代码语言:javascript
代码运行次数:0
运行
复制
sudo ufw status
# 应显示 80 和 443 端口开放
验证 HTTPS

访问 https://yourdomain.com,你应该能看到:

  1. 浏览器地址栏显示绿色锁标志
  2. 网站内容正常加载
  3. 自动跳转到 HTTPS(如访问 HTTP 版本)

高级配置

重定向 www 到非 www
代码语言:javascript
代码运行次数:0
运行
复制
yourdomain.com {
    redir https://www.yourdomain.com{uri}
}

www.yourdomain.com {
    root * /var/www/blogs
    file_server
}
添加 Basic Auth
代码语言:javascript
代码运行次数:0
运行
复制
caddy hash-password --plaintext '你的密码'

然后在 Caddyfile 中添加:

代码语言:javascript
代码运行次数:0
运行
复制
basicauth {
    用户名 生成的密码哈希
}
自定义错误页面
代码语言:javascript
代码运行次数:0
运行
复制
handle_errors {
    @404 {
        expression {http.error.status_code} == 404
    }
    rewrite @404 /404.html
    file_server
}

结语

好了,今天的分享就这些了,通过本文,你可以成功使用 Caddy 部署了静态博客网站,并实现了:

  • 自动 HTTPS 证书申请和续期
  • Gzip 压缩优化
  • 完善的权限配置
  • 日志记录功能
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萌萌哒草头将军 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 安装 Caddy
    • 安装 Caddy
    • 验证安装
  • 准备博客文件
    • 创建博客目录
    • 设置权限
    • 上传博客文件
  • 配置 Caddy
    • 编辑配置文件
    • 写入以下配置
  • 启动服务
    • 创建 Systemd 服务文件
    • 启动 Caddy
    • 设置开机启动
    • 检查状态
  • 防火墙配置
    • 开放端口
    • 验证防火墙
    • 验证 HTTPS
  • 高级配置
    • 重定向 www 到非 www
    • 添加 Basic Auth
    • 自定义错误页面
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档