众所周知,Web 做事器是 Web 开拓中不可或缺的根本做事,在开拓中常常会用到。耳熟能详的开源 Web 做事器有久负盛名的 Apache、性能强劲的 Nginx。而我们本日要先容的开源项目是采取 Go 编写的 Web 做事端“后起之秀”:Caddy 它拥有下载无需安装就能用、零配置实现 HTTPS 等特点,从而在强者如云的 Web 做事器中霸占了一席之地。
在这个 HTTPS 必选的时期,Caddy 凭借无需额外配置自动 HTTPS,分分钟完成 HTTPS 站点搭建,使它成为了中小型 Web 做事的首选做事器。Caddy 深受开源爱好者们的喜好,2014 年开源至今共收成了 3.6 万颗星。
项目地址:github.com/caddyserver/caddy
一、为什么利用 Caddy ?(图片来自网络侵删)Caddy 是一个强大的、可扩展的平台,可以为您的站点、做事和运用程序供应做事。
利用 Caddy 可以在 Linux、Mac、Windows 上快速支配 http(s) 站点或反向代理做事。支持:
HTTP/1.1 和 HTTP/2同时接管 HTTPS 自动签发和手动管理虚拟主机 (多个站点事情在单个端口上)原生 IPv4 和 IPv6 支持静态文件分发平滑重启/重载反向代理 (HTTP 或 WebSocket)负载均衡和康健性检讨Markdown 渲染文件浏览做事等等与传统的 Nginx 或者 Apache 比较,Caddy 整体只有一个可实行文件,安装便捷不易涌现奇怪的依赖问题,配置文件构造清晰语法大略易于上手,依托于模块化架构可以利用 Go 措辞快速开拓扩展模块。
下面让我们上手把玩一番吧。
二、安装系统环境:Ubuntu 20.04 LTS
Caddy 可以作为一个别系做事安装,命令:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-httpscurl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asccurl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.listsudo apt updatesudo apt install caddy
把稳:这种办法安装完成后会启动做事,开机自动启动。
还可以下载一个可实行文件利用。
下载地址:https://caddyserver.com/download在网页上方选择自己的操作系统后,点击右侧蓝色的 Download 按钮即可下载好的文件不能够直接运行,须要为其添加权限
命令行实行 caddy version 命令,涌现版本信息:
v2.4.6 h1:HGkGICFGvyrodcqOOclHKfvJC0qTU7vny/7FhYp9hNw=
即为安装成功!
三、从零完成 HTTPS 站点下面将演示如何通过 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.comrespond "Hello HTTPS!
域名访问返回的内容
"第四步:启动,在同一目录下实行命令:sudo caddy run
Caddy 默认利用实行命令目录下的 Caddyfile 文件内的配置。
末了,访问 caddy.hellogithub.com 考验效果吧!
四、上手教程
这里将从 Caddy 常用命令开始,再到配置讲解,末了会通过一个实际案例来展示如何用 Caddy 配置网站和上线。
4.1 常用命令4.2 配置文件Caddy 的原生配置文件利用的是 JSON 格式。但是为了用户编写方便它供应了 Caddyfile 作为接口让用户可以快速配置站点信息,运行时 Caddy 会自动将 Caddyfile 的配置信息转为 JSON 配置文件。
Caddyfile 所能供应功能不如 JSON 配置文件强大,但是对付不须要繁芜配置的用户而言完备够用了。
Caddyfile 的配置指令格式如下:
directive [<matcher>] <args...> { # matcher 代表匹配器,如果供应则该指令将只对 matcher 描述的资源进行相应subdirective [<args...>]# 子指令}
Caddyfile 的文件构造如图所示:
4.3 演示
下面将演示如何用 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 ./ # 设置当前站点根目录为当前文件夹, 表示匹配所有的 requesttemplatesfile_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 的页面4.4 供应接口管理办法Caddy 除了大略易懂的配置文件办法,还供应了管理配置的接口。通过这些接口可以轻松实现 Web 做事器管理自动化、集成发布等高等功能。
供应的接口和功能:
POST /load 设置或更换活动配置POST /stop 停滞活动配置并退出进程GET /config/[path] 导出指定路径的配置POST /config/[path] 设置或更换工具;追加到数组PUT /config/[path] 创建新工具或插入数组PATCH /config/[path] 更换现有工具或数组元素DELETE /config/[path] 删除指定路径的值在 JSON 中利用@id 轻松遍历配置构造GET /reverse_proxy/upstreams 返回配置的代理上游确当前状态由于篇幅问题这里就不再进行演示了,如果您想深入理解可以阅读 Caddy 的官方文档。
五、总结看到这里你该当对 Caddy 有了一些理解,有没有一种相见恨晚的觉得?
虽然它的性能比不了 Nginx,但如果论上手的难易度 Caddy 甩 Nginx 几条街!
紧张是默认开启 HTTPS 功能太喷鼻香了,你什么都不用管就可以免费、快速、轻松开启网站 HTTPS。末了,如果你想搭建个静态博客或小站,快去试试 Caddy 吧!
喷鼻香不喷鼻香只有“吃”过才知道~这里是 HelloGitHub 推出的《讲解开源项目》系列,为您叩开开源项目的大门。