caddy2 使用阿里 dns 实现 https 和 http 301重定向
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.com
和 http://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.com
和 http://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.com
和 http://a.example.com
即可。