原创

玩转CVM之部署Caddy

这是一个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上下载。

一键安装Caddy脚本

下载后直接运行脚本就能够进行一键安装。 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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实验列表

    1.Linux 基础入门 https://cloud.tencent.com/developer/labs/lab/10000

    蒋小爱
  • 玩转CVM之iPerf测试

    提起iPerf,想必大家都知道它是用来测试网络性能的命令。iPerf是美国伊利诺斯大学(University of Illinois)开发的一种开源的网络性能测...

    苏欣
  • 【玩转腾讯云】十三.基于云平台的安全攻防靶场系统构建

    ②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可

    一只特立独行的兔先生
  • 图解跨域请求、反向代理原理,对前端更友好的反向代理服务器 - Caddy

    本文采用图文解析、结合实战的方式进行网络原理解析,帮助大家去掌握一些网络知识,并了解 Caddy 的基本使用(见下图)。

    落落落洛克
  • 【玩转腾讯云】十一.轻松打造一款好用的私有云笔记

    ②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可

    一只特立独行的兔先生
  • 【玩转腾讯云】十二. 在云端构建日志集中存储管理平台

    ②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可

    一只特立独行的兔先生
  • 使用Github Actions实现Hugo博客自动发布到腾讯云静态网站托管

    之前博客因为是使用Caddy的GitHub webhook实现网站自动部署,但是因为Caddy现在已经升级到了v2版本,能使用的插件少了一点。看到腾讯云增加了静...

    JefferyWang
  • 【玩转腾讯云】征文活动获奖名单公布

    由云+社区联合腾讯云免费体验馆及各产品团队举办【玩转腾讯云】征文活动,吸引入驻作者积极参加,非常感谢各位作者的参与。经过评委老师从产品创新性、实用性、可借鉴性、...

    云加社区
  • 【玩转腾讯云】十.通过Web浏览器对CVM服务器运维管理

    ②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可

    一只特立独行的兔先生
  • 【玩转腾讯云】八.一分钟快速上手搭建宝塔管理面板

    ②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可

    一只特立独行的兔先生
  • 关于反向代理的两种实践方式

    配置多网址重定向到主网址,比如访问 simple.com 跳转到 www.simple.com

    乐心湖
  • 玩转CVM之Cloud-Init排障

    Cloud-Init 是一个纯开源的工具,它是虚拟机内部的一个服务,在开机启动的时候会被执行,非常驻服务,执行完就会退出。腾讯云的 Linux 公有镜像都预安装...

    苏欣
  • 【玩转腾讯云】四.使用云服务器CVM轻松部署Node.js

    ②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可

    一只特立独行的兔先生
  • 像iPhone一样好玩的Web服务器: Caddy

    据Netcraft今年5月份放出了一篇统计文章中,Apache、Nginx和微软的IIS分别以45.61%、20.22%和7.83%市场占有率依然排在“活跃网站...

    李海彬
  • 【玩转腾讯云】3分钟打造个人专属云盘,速度吊打某云盘

    ②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可

    一只特立独行的兔先生
  • 【玩转腾讯云】七.基于CVM快速搭建部署属于自己的维基百科

    ②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可

    一只特立独行的兔先生
  • 在腾讯云CVM上使用Go语言编译软件

    Go 语言强大之处在于其能够快速编译为机器能识别的可执行文件,Go 语言有完整的开发体系,使其能够简单的获取包及编译。go语言编译的软件全平台通用,没必要再去给...

    彼岸轮回
  • 【玩转腾讯云】九.云开发CloudBase快速上手hexo博客

    ① 在产品控制面板中找到云开发CloudBase——立即使用,进入云开发授权开通页面

    一只特立独行的兔先生
  • 【玩转腾讯云】五.手把手教你用VNC搭建Ubuntu可视化界面(一)

    ②选择自定义配置——计费模式为“按量付费”——地域选择“北京”——可用区选择“随机可用区”——网络选择“默认”即可

    一只特立独行的兔先生

扫码关注云+社区

领取腾讯云代金券