比 Nginx 更好用的 web 服务器:Caddy

· · 2461 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

双 11 薅了一下阿里云的羊毛 ,新vps用新工具武装下 。

What is Caddy

Caddy 首先是一个用Go实现的Web Server。

在追求性能的道路上,nginx已经一骑绝尘。这种情况下诞生的 Gaddy有什么特性呢?

Caddy的作者Matt Holt有这样的理念: 其他Web Server为Web而设计,Caddy为human设计。可以看出Caddy主打易用性,使用配置简单。得益于Go的跨平台特性,Caddy很容易的支持了三大主流系统:Windows、 Linux、Mac。

Caddy最大的特点是用起来简单, 它有下面这些开箱即用的特性:

  • 全自动支持HTTP/2协议,无需任何配置。
  • Caddy 使用 Let’s Encrypt 让你的站点全自动变成HTTPS,无需任何配置。
  • 合理使用多核多核 得益于go的特性
  • 完全支持IPv6环境
  • Caddy 对WebSockets有很好的支持
  • 自动把Markdown转成 HTML
  • Caddy 对log格式的定义很容易
  • 易于部署 得益于go的特性,caddy只是一个小小的二进制文件,没有依赖,很好部署。

“几乎所有的功能在Caddy里的都是插件,HTTP服务器是插件,高级的TLS特性也是插件,每一行命令实现的功能都是一个插件”

创建新用户

sudo adduser Andy # 交互式命令 使用adduser时,系统会提示你输入各种信息,然后会根据这些信息创建新用户

sudo usermod -a -G sudo Andy # 将Andy添加到 sudo 用户组

安装 golang

sudo apt install software-properties-common

sudo add-apt-repository ppa:gophers/archive
sudo apt update
sudo apt install golang-1.13-go

ls -l /usr/lib/go-1.13/bin # 安装位置
ln -s /usr/lib/go-1.13/bin/go /usr/bin/go

一键安装 Gaddy

CADDY_TELEMETRY=on curl https://getcaddy.com | bash -s personal

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7380  100  7380    0     0   6897      0  0:00:01  0:00:01 --:--:--  6897

Downloading Caddy for linux/amd64 (personal license)...

Download verification OK
Extracting...
Putting caddy in /usr/local/bin (may require password)
Caddy v1.0.3 (h1:i9gRhBgvc5ifchwWtSe7pDpsdS9+Q0Rw9oYQmYUTw1w=)
Successfully installed

配置 Caddy

sudo mkdir -p /etc/caddy # 配置文件夹
sudo touch /etc/caddy/Caddyfile

Caddyfile写入以下内容,格式还是比较简单的

example.com:80
gzip
log /var/log/caddy/access.log
root /var/www
tls tls@outlook.com

首先第一行必须是网站的地址
首先第一行必须是网站的地址
首先第一行必须是网站的地址

第2行的 gzip 是一个指令,表示打开 gzip 压缩功能,这样网站在传输网页时降低流量

第3行的 log 指令会为网站开启 log 功能,log 后的参数是log 文件的存放位置

第4行的 root 是指定网站的根目录

第5行的 tls 指令告诉 caddy 为网站开启 https 并自动申请证书,后面的 email 参数是告知 CA 申请人的邮箱。caddy 会默认使用 let's encrypt 申请证书并续约。
tls 也可以使用路径给出的证书 tls /etc/ssl/cert.pem /etc/ssl/key.pem

如何设置多站点访问呢?

example.com:80 {
  gzip
  log /var/log/caddy/access.log
  root /var/www
  tls /etc/ssl/cert.pem /etc/ssl/key.pem
}
example2.com:3000{
  gzip
  log /var/log/caddy/example2/access.log
  root /var/www/example2
  tls /etc/ssl/example2/cert.pem /etc/ssl/example2/key.pem
}

基本的 caddy 配置就这些,详细的内容可以去官网上看文档学习

成为比 Nginx 更好用的 web 服务器,这个目标Caddy已经达成了!


参考:

https://tonybai.com/2015/06/04/caddy-a-web-server-in-go/
https://github.com/golang/go/wiki/Ubuntu
https://zhuanlan.zhihu.com/p/25815245
https://www.zybuluo.com/zwh8800/note/844776


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:

查看原文:比 Nginx 更好用的 web 服务器:Caddy

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

2461 次点击  
加入收藏 微博
1 回复  |  直到 2019-11-12 19:03:38
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传