这是一个Web Server的时代,apache与nginx争奇斗艳,在追求极致性能的路上,你追我赶,没有最高,只有更高。但这又是一个追求个性化的时代,有些Web Server并没有去挤"Performance提升"这一独木桥,而是有着自己的定位,Caddy就是这样一个开源Web Server。
Caddy的作者Matt Holt在caddy官网以及FAQ中对caddy的目标阐释如下: 其他Web Server为Web而设计,Caddy为human设计。功能定位上,与经常充当最前端反向代理的nginx不同,caddy致力于成为一个易用的静态 文件Web Server。可以看出Caddy主打易用性,使用配置简单。并且得益于Go的跨平台特性,caddy很容易的支持了三大主流平台:Windows、 Linux、Mac。在Caddy开发者文档中,我们可以看到caddy还可以在Android(linux arm)上运行。
关注caddy,是因为caddy填补了go在通用web server这块的空白(也许有其他,但我还不知道),同时Web server in go也“响应”了近期Golang去C化的趋势(Go 1.5中C is gone!),即便caddy作者提到caddy的目标并非如nginx那样。但未来谁知道呢?一旦Go性能足够高时,一旦caddy足够稳定时,自然而 然的就会有人将其用在某些应用的生产环境中替代nginx或apache2了。一套全Go的系统,在部署、运维方面也是有优势的。
Caddy 一个显著的特性是默认启用 HTTPS。它是第一个无需额外配置即可提供 HTTPS 特性的 Web 服务器。默认证书有效期为3个月,到期后能够自动进行续期,这极大降低了中小型网站启用HTTPS的成本和便利性。Caddy 默认通过检查域名来启用 HTTPS (通过 ACME protocol 检查域名并签发证书), 并且重定向 HTTP 请求到 HTTPS。它在启动期间根据需要签发证书,并在服务器的使用期间自动重签发。 Let's Encrypt 是默认的证书颁发机构,但用户可以自定义所使用的 ACME CA,这在测试配置时是必要的。当然用户还可以自行进行证书的配置。
1.安装Caddy
本文提供一键安装Caddy脚本,抛去琐碎的安装方法,简单快捷。适用的操作系统为:CentOS/Debian/Ubuntu。安装脚本可移步 GitHub上下载。
下载后直接运行脚本就能够进行一键安装。
wget --no-check-certificate https://github.com/suxin1110/CaddyInstall/caddy_install.sh && chmod +x caddy_install.sh && ./caddy_install.sh
Caddy 使用命令:/usr/local/caddy/Caddyfile
日志文件:cat /tmp/caddy.log
使用说明:service caddy start | stop | restart | status
或者使用:/etc/init.d/caddy start | stop | restart | status
2.配置说明
Caddy需要配置的文件就是Caddyfile,该文件默认的路径为/usr/local/caddy/Caddyfile
Caddyfile配置文件总是把网站域名放在第一行:
localhost:8080
gzip
log ../access.log
使用一个Caddyfile配置多站点,必须使用大括号来包含每个站点
mysite.com {
root /www/mysite.com
}
sub.mysite.com:443 { #写443 端口,会要求输入邮箱地址,自动生成ssl 加密证书gzip
root /www/sub.mysite.com
gzip
log ../access.log
}
Caddy也能够实现反向代理功能,相比其他Web Server的配置,Caddyfile反向代理的配置简直可以说处理拔萃,只需要一条命令就可以实现
mysite.com:8080 {
log ./mysite.log
proxy /a localhost:9091
proxy /bar localhost:9092
}
#当你访问mysite.com:8080:2015/a时,实际上访问的是9091端口的服务程序;
#当你访问mysite.com:8080:2015/b时,实际上访问的是9092端口的服务程序。
Caddy支持负载均衡配置,并支持三种负载均衡算法:random(随机)、least_conn(最少连接)以及round_robin(轮询调度)。负载均衡同样是通过proxy middleware实现的。
localhost:8080 {
log ./mysite.log
proxy / localhost:9091 localhost:9093 {
policy round_robin
}
proxy /b localhost:9092 localhost:9094 {
policy least_conn
}
}
caddy的功能不局限于上面的几个例子,上面只是几个最为常见的场景,Caddyfile中详细配置文档可参考如下 https://caddyserver.com/docs
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。