caddy 是什么
官网介绍:
Caddy是一款基于Go语言编写的强大且可扩展的平台,可以给你的站点、服务和应用程序提供服务。
我们可以简单理解为一个反向代理服务器,类似于nginx。 有了nginx,并且nginx也很强大,为什么要用caddy
呢?
相比于nginx
,caddy
有以下有点
- 配置简单
- 默认启用
https
,自动管理维护tls
证书(简直不要太方便) - 自带管理API
- 原生支持
http/3,QUIC
协议
下面就让我带领大家感受下caddy
的魅力。
准备工作
- 一台有公网ip的服务器
- 安装
go
环境(非必须,只要能启动web服务就可以)
下载安装
官网提供的多种下载安装方式(如果有需要,也可从网盘下载,大家可以选择适合自己的方式。这里不再赘述。 如果是以服务形式安装的,一般安装后,服务会自动启动;如果只是下载了二进制文件,则需要执行
sudo ./caddy start
启动服务。默认监听80(http),443(https)端口。
要确保80端口和443端口没有被防火墙拦截。有的服务器除了防火墙,还需要在控制面板中配置安全策略放行端口。
配置代理静态文件
我们先创建一个文件夹www
,再加入一个简单的静态文件index.html
,内容如下:
<!DOCTYPE html>
<html>
<head>
<title>Hello Caddy</title>
</head>
<body>
<h1>Hello Caddy</h1>
</body>
</html>
修改caddy配置文件
如果你是以服务的形式安装的,则默认配置文件在/etc/caddy/Caddyfile
(可能会有差异,可以稍微找一下);如果是下载的二进制文件,没有Caddyfile
,可以在当前文件夹(www
)创建一个Caddyfile
,内容如下:
static.12358134.xyz {
root * /path/to/www
file_server
}
保存后,运行sudo ./caddy reload
命令(如果安装了服务,重启服务),重加载配置。
添加DNS解析记录
域名访问
可以看到,已经成功访问了,并且自动开启了https
。完全不需要关心tls
证书的事,只需一个域名(没有域名的可以参考我的另一篇文章永久免费域名,caddy
把剩下的事都干了。
配置代理web服务
除了代理静态服务,还可以反向代理web服务
,我们先创建一个简单的web服务
。
新建一个main.go文件,内容如下:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello Caddy"))
})
fmt.Println("Server listening on :12346")
if err := http.ListenAndServe(":12346", nil); err != nil {
panic(err)
}
}
运行go run main.go
启动服务。
修改caddy配置文件
添加如下内容
goweb.12358134.xyz {
reverse_proxy localhost:12346
}
同样需要重启下caddy
服务。
我们已经把本地服务交给
caddy
代理了,所以这里我们不用开放12346端口了。
访问测试
修改域名解析记录,然后访问测试。
简直太方便了,再也不用搞nginx繁琐的配置了。
相关链接: