站点介绍
众所周知,Web 服务器是 Web 开发中不可或缺的基础服务,在开发中经常会用到。耳熟能详的开源 Web 服务器有久负盛名的 Apache、性能强劲的 Nginx。而我们今天要介绍的开源项目是采用 Go 编写的 Web 服务端“后起之秀”:Caddy 它拥有下载无需安装就能用、零配置实现 HTTPS 等特点,从而在强者如云的 Web 服务器中占据了一席之地。
在这个 HTTPS 必选的时代,Caddy 凭借无需额外配置自动 HTTPS,分分钟完成 HTTPS 站点搭建,使它成为了中小型 Web 服务的首选服务器。Caddy 深受开源爱好者们的喜爱,2014 年开源至今共收获了 3.6 万颗星。
项目地址:https://github.com/caddyserver/caddy
Caddy 是一个强大的、可扩展的平台,可以为您的站点、服务和应用程序提供服务。
使用 Caddy 可以在 Linux、Mac、Windows 上快速部署 http(s) 站点或反向代理服务。支持:
与传统的 Nginx 或者 Apache 相比,Caddy 整体只有一个可执行文件,安装便捷不易出现奇怪的依赖问题,配置文件结构清晰语法简单易于上手,依托于模块化架构可以使用 Go 语言快速开发扩展模块。
下面让我们上手把玩一番吧。
系统环境:Ubuntu 20.04 LTS
Caddy 可以作为一个系统服务安装,命令:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
注意
:这种方式安装完成后会启动服务,开机自动启动。
还可以下载一个可执行文件使用。
$ mv caddy_linux_amd64 caddy # 将下载后的文件重命名方便后面指令输入,根据系统不同文件名不一样
$ sudo chmod a+x caddy # 为 Caddy 添加可执行权限
$ mv caddy /bin/caddy # 将 Caddy 复制到 bin 目录这样可以在命令行随时使用
命令行执行 caddy version
命令,出现版本信息:
v2.4.6 h1:HGkGICFGvyrodcqOOclHKfvJC0qTU7vny/7FhYp9hNw=
即为安装成功!
下面将演示如何通过 Caddy 完成 HTTPS 站点。只需要 4 步:
Tips
例子用的域名为:caddy.hellogithub.com 修改为你的域名即可。
第一步:安装,采用上面介绍的命令安装
第二步:设置域名解析地址,在购买域名的网站设置。如下图:
设置完生效需要几分钟,可通过下面的命令检查是否生效:
curl "https://cloudflare-dns.com/dns-query?name=caddy.hellogithub.com&type=A" -H "accept: application/dns-json"
域名设置生效,返回如下:
{"Status":0,"TC":false,"RD":true,"RA":true,"AD":false,"CD":false,"Question":[{"name":"caddy.hellogithub.com","type":1}],"Answer":[{"name":"caddy.hellogithub.com","type":1,"TTL":592,"data":"107.150.122.176"}]}
第三步:创建配置文件 Caddyfile
,无需额外的开启 HTTPS 的设置:
caddy.hellogithub.com
respond "Hello HTTPS!"
第四步:启动,在同一目录下执行命令:sudo caddy run
,usdt官网接口(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键出售Usdt。
Caddy 默认使用执行命令目录下的 Caddyfile 文件内的配置。
最后,访问 caddy.hellogithub.com
检验效果吧!
这里将从 Caddy 常用命令开始,再到配置讲解,最后会通过一个实际案例来展示如何用 Caddy 配置网站和上线。
Caddy 的原生配置文件使用的是 JSON 格式。但是为了用户编写方便它提供了 Caddyfile 作为接口让用户可以快速配置站点信息,运行时 Caddy 会自动将 Caddyfile 的配置信息转为 JSON 配置文件。
Caddyfile 所能提供功能不如 JSON 配置文件强大,但是对于不需要复杂配置的用户而言完全够用了。
Caddyfile 的配置指令格式如下:
directive [<matcher>] <args...> { # matcher 代表匹配器,如果提供则该指令将只对 matcher 描述的资源进行响应
subdirective [<args...>] # 子指令
}
Caddyfile 的文件结构如图所示:
下面将演示如何用 Caddy 搭建站点,加深理解配置格式和命令使用。
目录结构:
.
├── Caddyfile
├── index.html
└── public
└── HG.html
两个页面文件 index.html
和 HG.html
的内容如下:
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
你好,世界!
</body>
</html>
<!-- HG.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HelloGitHub</title>
</head>
<body>
HelloGitHub
</body>
</html>
Caddyfile
配置内容如下:
# 如果本机没有 wordpress 则注释这一块儿的站点配置
#:80 { # 部署一个 wordpress 站点
# root * /var/www/wordpress
# php_fastcgi unix//run/php/php-version-fpm.sock # 配置一个 fastcig 服务
# file_server # 配置一个文件服务
#}
http://localhost:3000 {
basicauth /public/* {
# 匹配访问 localhost:3000/public/* 的请求,为其加上登陆保护
HG JDJhJDE0JGEySk9janFMdHlBY2Y0aVdQZklQak9HcmwzNDZhNFg0N3V5Ny9EZkZMZHB1Nkt4ZE5BNGJt
# 用户名 HG 密码 HelloGitHub,密码使用 caddy hash-passowrd 指令生成
}
root * ./ # 设置当前站点根目录为当前文件夹,* 表示匹配所有的 request
templates
file_server {
# 配置当前站点为静态文件服务器,可用于博客系统的搭建
hide .git # 隐藏所有的 .git 文件
}
}
:4000 {
reverse_proxy /public/* http://localhost:3000 # 配置反向代理
# 只会匹配 locahost:4000/public 的请求,转发到 localhost:3000/public/
}
在当前目录输入:
$ caddy run # 启动 Caddy
最后,效果如下:
访问:http://localhost:3000
可以看到页面展示 “你好,世界!”
访问:http://localhost:3000/public/HG.html
提示输入用户名和密码,验证正确后才能看到页面。
访问:http://localhost:4000
则会自动跳转到端口 3000 的页面
Caddy 除了简单易懂的配置文件方式,还提供了管理配置的接口。通过这些接口可以轻松实现 Web 服务器管理自动化、集成发布等高级功能。
提供的接口和功能:
@id
轻松遍历配置结构由于篇幅问题这里就不再进行演示了,如果您想深入了解可以阅读 Caddy 的官方文档。
看到这里你应该对 Caddy 有了一些了解,有没有一种相见恨晚的感觉?
虽然它的性能比不了 Nginx,但如果论上手的难易度 Caddy 甩 Nginx 几条街!主要是默认开启 HTTPS 功能太香了,你什么都不用管就可以免费、快速、轻松开启网站 HTTPS。
最后,如果你想搭建个静态博客或小站,快去试试 Caddy 吧!香不香只有“吃”过才知道~
这里是 HelloGitHub 推出的《讲解开源项目》系列,为您叩开开源项目的大门。
评论列表
2022-02-28 09:18:05
染疫韩星再加一【yi】,LOVELYZ女团成员徐智秀传出新冠肺炎确诊,现在(zai)已周全住手流动,与「yu」她曾接触过的成员与事情职员在接受相关检查后,均在自我隔离中。眼睛看酸了
1970-01-01 08:00:00
不错一直在看。USDT场外交易(www.usdt8.vip),全球頂尖的USDT場外擔保交易平臺
2022-03-04 19:50:19
十分给力啊,好站欧博会员开户(www.aLLbetgame.us),欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。
2022-05-01 17:35:06
今年最棒的文足球免费推荐(www.zq68.vip)是国内最权威的足球赛事报道、预测平台。免费提供赛事直播,免费足球贴士,免费足球推介,免费专家贴士,免费足球推荐,最专业的足球心水网。
2022-11-24 20:41:37
氪金我都愿意欧博亚洲APP下载(www.aLLbetgame.us),欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。
2022-03-22 00:00:03
会爆火吗,期待USDT跑分(www.Uotc.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U担保开放usdt otc API接口、支付回调等接口。
2022-04-13 00:01:04
打酱油偶然看到新2手机管理端(www.huangguan.us)实时更新发布最新最快的新2代理线路、新2会员线路、新2备用登录网址、新2手机管理端、新2手机版登录网址、新2皇冠登录网址。
2022-06-01 00:00:23
据中国载人航天工程办公室消息,天舟二号货运飞船完成空间站组合体阶段全部既定任务,已于北京时间3月27日15时59分撤离空间站核心舱组合体。我已经入迷了
2022-02-19 00:00:44
克日,黄子韬一组宣传物料曝光引发粉丝热议,粉丝纷纷示意拍摄效果不佳,服装搭配不时尚,图片品质差,对其事情室营业能力提出质疑。(图片泉源于微博)很好,引人入胜啊