caddy2 使用阿里 dns 实现 https 和 http 301重定向

368

Caddy is a powerful, extensible platform to serve your sites, services, and apps, written in Go. If you’re new to Caddy, the way you serve the Web is about to change.
Caddy是一个功能强大、可扩展的平台,可为您的网站、服务和应用程序提供服务,用Go编写。如果你是Caddy的新手,那么你服务网络的方式就要改变了。

Most people use Caddy as a web server or proxy, but at its core, Caddy is a server of servers. With the requisite modules, it can take on the role of any long-running process!
大多数人将Caddy用作web服务器或代理,但其核心是服务器的服务器(server of servers)。通过必要的模块,它可以担当任何长时间运行的流程的角色!

通过caddy可以非常简单(极简配置只需要一行)的自动生成https证书,并且可以自动代理http请求。

前提

  • 被代理的服务已经监听于 localhost:8080
  • 假设域名为 a.example.com
  • 域名已经解析到被代理服务所在主机

如果 dns 不需要认证

1 安装 caddy

直接按照 官方文档 选择对应的包管理工具进行安装即可

2 配置 Caddyfile

Caddyfile 是最关键的配置文件,绝大多数的配置在此修改。

直接使用下面的内容覆盖 /etc/caddy/Caddyfile 中的所有内容。

a.example.com {
  reverse_proxy localhost:8080
}

3 重启 caddy

sudo systemctl restart caddy

访问 https://a.example.comhttp://a.example.com 即可。

如果 dns 需要认证

大多数情况下不需要认证。但在某些情况下,例如使用了阿里dns,但是服务却部署在百度云上,在生成证书时需要认证。

1 安装caddy以及alidns插件

caddy的插件需要在编译时加入,官方提供了包含常用的插件的caddy下载。

访问 此网址 ,选择对应platform,搜索alidns,并下载。

下载后按照 此文档 进行安装。

2 获取dns的密钥

以阿里云dns为例,访问控制台,点击头像,选择 AccessKey管理。

复制 AccessKey ID 和 Secret。

3 配置 Caddyfile

Caddyfile 是最关键的配置文件,绝大多数的配置在此修改。

直接使用下面的内容覆盖 /etc/caddy/Caddyfile 中的所有内容。

a.example.com {
  tls {
    dns alidns {
      access_key_id ${AccessKey ID}
      access_key_secret ${Secret}
    }
  }
  reverse_proxy localhost:8080
}

4 重启 caddy

sudo systemctl restart caddy

访问 https://a.example.comhttp://a.example.com 即可。

使用301重定向http

默认情况下,caddy会自动使用302重定向http网站,不需要执行此步骤。

但是百度收录时要求必须使用301响应重定向,所以需要修改。

1 修改Caddyfile,关闭默认重定向

修改 /etc/caddy/Caddyfile ,替换以下内容:

{
  auto_https disable_redirects
}

http://a.example.com {
  redir https://a.example.com 301
}

# 在已经配置好的域名上添加https
https://a.example.com {
  # ...
  reverse_proxy localhost:8080
}

2 重启 caddy

sudo systemctl restart caddy

访问 https://a.example.comhttp://a.example.com 即可。