使用 Caddy 作为 Web 服务器的常规配置
前言
过去,我们常常使用 Apache、nginx、lighttpd 甚至会手工编写一个静态服务器去托管我们的网页文件、去做反向代理、做重定向、做路由映射。这些流行的服务器软件非常成熟和强大。
成熟和强大,必然带来一个问题,首先就是发布时间很早,会有很多遗留问题。比如规范的变化、配置文件的复杂性、性能上的不足、功能上的缺陷等等。
那么,随着互联网的技术的更新迭代,新的技术替代老的技术和思路已经成为一种趋势,更多的新技术运用到老的服务器软件上,就显得有点笨拙和力不从心了。
近2年来,有一款非常强大、配置简洁、使用简单的 Web 服务器出现了,那就是 Caddy。
Caddy 是一款开源的社区免费使用的服务器软件,主要用作静态文件托管,当然,反向代理、重定向等功能都很完备配置非常简洁。
下载
在 Github 的代码仓库
https://github.com/caddyserver/caddy/releases
可以找到 Caddy 的版本发布,Release 中就有对应不同操作系统的压缩包,我们选择
caddy_v1.0.1_linux_amd64.tar.gz
解压到 /usr/local/bin 即可。
基本配置
快速开始
这样,就会绑定本地 http://127.0.0.1:2015 端口,直接访问即可去获取 index.html
常用配置
端口绑定、HTTP/2、路径配置、开启 TLS、GZIP 压缩、日志记录
[Shell] 纯文本查看 复制代码 :8080 {
push
root /web/www
tls [url=mailto:mail@itcast.cn]mail@itcast.cn[/url]
gzip {
level 9
}
log /tmp/caddy/caddy.log
}
这样,就绑定在了8080端口,且自动配置 HTTP/2 和安全传输,根路径在 /web/www,GZIP 压缩设置到了最高级别,log 记录在临时路径下。
反向代理 API + 负载均衡
[Shell] 纯文本查看 复制代码 :8080 {
proxy /api web1.local:80 web2.local:90 web3.local:100 {
policy round_robin
}
}
这样,将请求 /api 的地址全部分发到了 3 个服务器,且采用 round_robin 形式进行分发请求,实现负载均衡。
重定向请求
[Shell] 纯文本查看 复制代码 redir 301 {
/sign https://{host}{uri}
}
这样,将 /sign 带有登陆地址的地方,强制走向 https 与常规静态文件隔开。
结语
Caddy 目前才推出正式版本,肯定有很多不完善的地方,但是已经能应付很多开发场景,主要还是配置轻松,和运行良好,同学们期待吧。
|