自学内容网 自学内容网

宝塔面板从 Nginx 切换到 Caddy:详细教程

Caddy 是一个现代的 Web 服务器,具有自动 HTTPS、简单的配置语法和强大的反向代理功能。本文将指导你如何从 Nginx 迁移到 Caddy,逐步实现 HTTPS 反向代理。

前提条件

  • 拥有一个已解析到服务器 IP 的域名。
  • 已安装 Docker,方便运行 Caddy 容器。(商店可以下载安装caddy)

步骤一:停止并移除 Nginx

在切换到 Caddy 前,首先需要停止并移除 Nginx 服务,以避免端口冲突。

  1. 停止 Nginx 服务:

    systemctl stop nginx
    
  2. 禁用 Nginx 自动启动(可选):

    systemctl disable nginx
    
  3. 确认 Nginx 已停止:

    systemctl status nginx
    

    确认 Nginx 状态为 inactive

步骤二:安装 Caddy

我们使用 Docker 来运行 Caddy,这样更便于管理。

1. 拉取并运行 Caddy Docker 容器

运行以下命令,拉取 Caddy 镜像并启动容器:

docker run -d --name caddy -p 80:80 -p 443:443 caddy

这条命令将 Caddy 容器启动并暴露 80 和 443 端口。

步骤三:配置 Caddy 反向代理

1. 准备 Caddyfile

Caddy 使用一个简单的配置文件 Caddyfile 来定义站点和反向代理。你可以在 /www/server/caddy/Caddyfile 中创建或编辑该文件。配置内容如下:

# 强制 HTTP 配置
http://你的域名 {
    reverse_proxy 127.0.0.1:8300
}

# 强制 HTTPS 配置并加载手动证书
https://你的域名 {
    reverse_proxy 127.0.0.1:8300
    tls /etc/letsencrypt/live/你的域名/fullchain.pem /etc/letsencrypt/live/你的域名/privkey.pem
}

解释

  • reverse_proxy 127.0.0.1:8300:将流量代理到本地 8300 端口。
  • tls:指定 HTTPS 所需的证书路径。

2. 使用 Certbot 手动申请证书

如果你还没有 SSL 证书,可以使用 certbot 工具手动申请。

  1. 安装 certbot(适用于 CentOS,其他系统请根据包管理器安装):

    yum install epel-release -y
    yum install certbot -y
    
  2. 申请证书:

    certbot certonly --standalone -d 你的域名
    

    成功后,证书将存放在 /etc/letsencrypt/live/你的域名/ 目录下。

步骤四:将证书目录挂载到 Docker 中

为了使 Docker 容器能够访问 /etc/letsencrypt 目录中的证书,需要在启动 Caddy 时挂载该目录。

  1. 停止并移除现有的 Caddy 容器:

    docker stop caddy
    docker rm caddy
    
  2. 使用以下命令重新启动 Caddy 容器,并挂载证书目录:

    docker run -d --name caddy \
        -v /etc/letsencrypt:/etc/letsencrypt:ro \
        -v /www/server/caddy/Caddyfile:/etc/caddy/Caddyfile \
        -p 80:80 -p 443:443 \
        caddy
    

    其中,-v /etc/letsencrypt:/etc/letsencrypt:ro 表示将 /etc/letsencrypt 目录挂载到容器内,并设置为只读。

步骤五:检查和调试

1. 查看 Caddy 日志

查看 Caddy 容器的日志,确保配置正常加载,HTTPS 启用成功:

docker logs caddy

日志中应显示 HTTPS 已启用,并在端口 443 监听。

2. 测试 HTTPS 访问

在浏览器中访问 https://你的域名,确认可以通过 HTTPS 访问,并没有任何安全警告。

3. 使用外部工具测试

可以使用 SSL Labs 等在线工具,检查 HTTPS 配置是否正确,证书是否有效。

常见问题排查

问题 1: Caddy 无法加载证书

  • 确认 /etc/letsencrypt 目录的权限。使用以下命令确保所有用户有读取权限:

    chmod -R 755 /etc/letsencrypt
    

问题 2: Caddy 仅监听 HTTP 端口

  • 如果 Caddy 日志中显示 server is listening only on the HTTP port,请确认 Caddyfile 中配置了 https://你的域名 块,并明确指定了证书路径。

问题 3: 防火墙或云服务器安全组未开放 443 端口

  • 确保服务器的防火墙或云提供商的安全组允许 80 和 443 端口访问。

    firewall-cmd --permanent --add-port=80/tcp
    firewall-cmd --permanent --add-port=443/tcp
    firewall-cmd --reload
    

总结

通过以上步骤,你可以成功从 Nginx 切换到 Caddy,实现自动 HTTPS 和反向代理功能。Caddy 的配置非常简单,且具有强大的自动 HTTPS 功能,适合快速搭建安全的 Web 服务。如果遇到任何问题,可以参考日志信息进行排查或进一步调整配置。


原文地址:https://blog.csdn.net/weixin_46211269/article/details/143809679

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!