admin管理员组

文章数量:1033962

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

前言

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

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

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

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

安装 Caddy

安装 Caddy

我使用的 curl下载的 Caddy

代码语言:javascript代码运行次数:0运行复制
sudo curl -o /usr/local/bin/caddy "`HTTPS`://caddyserver/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 {
    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

访问 ,你应该能看到:

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

高级配置

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

www.yourdomain {
    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 删除httpscaddy博客配置nginx

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

前言

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

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

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

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

安装 Caddy

安装 Caddy

我使用的 curl下载的 Caddy

代码语言:javascript代码运行次数:0运行复制
sudo curl -o /usr/local/bin/caddy "`HTTPS`://caddyserver/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 {
    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

访问 ,你应该能看到:

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

高级配置

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

www.yourdomain {
    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 删除httpscaddy博客配置nginx

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