56K star!Nginx的轻量替代者,自动HTTPS的web服务器

文摘   科技   2024-08-23 11:15   北京  

点击上方蓝字关注我们

IT 咖啡馆,探索无限可能!

恭喜你发现了这个宝藏,这里你会发现优质的开源项目、IT知识和有趣的内容。

 

Web服务器有非常多,比如Apache,Nginx,IIS,Tomcat,weblogic等等,一只手数不过来。

今天我们分享的开源项目,它是一个go语言写的开源web服务器,具备自动HTTPS和灵活配置的能力,它就是:Caddy





Caddy 是什么



Caddy 是一个现代化的 Web 服务器,旨在简化配置和管理。它支持自动获取和更新 TLS 证书,确保所有站点默认通过 HTTPS 提供服务。Caddy 的设计目标是提供一个安全、快速且易于使用的服务器解决方案。

作为一个web服务器,那Caddy总会和老大哥nginx来作对比,虽然从目前的市场占比来说还远远无法企及,但是在GitHub上面Caddy的star数量倒是确实超过了Nginx。

Caddy的特点包括了以下。

  1. 自动 HTTPS:Caddy 默认启用 HTTPS,并自动管理 TLS 证书。

  2. 易于配置:支持简单的 Caddyfile 配置文件和强大的 JSON 配置。

  3. 动态配置:通过 JSON API 实现在线配置管理。

  4. 反向代理:提供灵活且强大的 HTTP 反向代理功能。

  5. 静态文件服务器:生产就绪的静态文件服务器,有过数万亿请求验证,可拓展到数十万个站点,官方已验证。

  6. 跨平台支持:支持 Linux、Windows、macOS 等多种操作系统。

  7. 高性能:使用 Go 语言编写,具备高性能和内存安全性。

 




安装 Caddy



包管理器

 

你可以通过Linux的包管理器来安装Caddy,例如Ubuntu系统可以使用如下:

sudo apt install caddy

 

二进制文件

 

Caddy项目提供了编译好的版本,在 GitHub Releases页面,根据自己的平台选择对应的包,下载 Caddy并将可执行文件放在您的 PATH 中即可。

 

源码编译

 

另外你也可以从源码开始自己编译,可以参考一下的命令:

$ git clone "<https://github.com/caddyserver/caddy.git>"$ cd caddy/cmd/caddy/$ go build

同时项目提供了一个自己的编译工具,可以使用它来编译

 xcaddy build

这个工具会自动执行以下的步骤:

  1. 创建新文件夹:mkdir caddy

  2. 改成:cd caddy

  3. 将Caddy 的 main.go 复制到空文件夹中。添加要添加的任何自定义插件的导入。

  4. 初始化 Go 模块:go mod init caddy

  5. (可选)Pin Caddy 版本:用 git 标签、提交或分支名称go get github.com/caddyserver/caddy/v2@versionversion替换。

  6. (可选)通过添加导入来添加插件:_ "import/path/here"

  7. 编译:go build




使用Caddy



要将 Caddy 作为守护进程启动,请使用run子命令

caddy run

启动之后会在2019端口提供一个管理API,可以通过REST API向这个端口发送指令来配置Caddy。可以先curl一下来验证。

curl localhost:2019/config/

 

JSON配置

接下来我们来看一下如何通过文件来配置Caddy,从本质上讲,Caddy 的配置只是一个JSON文件。以下是一个参考的配置JSON

{  "apps": {    "http": {      "servers": {        "example": {          "listen": [":2015"],          "routes": [            {              "handle": [{                "handler": "static_response",                "body": "Hello, world!"              }]            }          ]        }      }    }  }}

然后我们通过管理API来上传这个配置

curl localhost:2019/load \\  -H "Content-Type: application/json" \\  -d @caddy.json

打开浏览器,访问 http://localhost:2015,你将看到 "Hello, world!" 的响应。

 

Caddyfile

 

配置 Caddy 的另一种方法是使用 Caddyfile 我们上面在 JSON 中编写的相同配置可以简单地表示为:

:2015
respond "Hello, world!"

把这个配置保持下来,然后先关掉Caddy,然后执行以下:

caddy adapt --config /path/to/Caddyfile

Caddy 会自动根据Caddyfile的内容来生成JSON配置。

简化的操作就是直接使用Caddyfile来运行,在run命令后面加上—config Caddyfile的位置即可

caddy run --config /path/to/Caddyfile

以下是一个对于JSON和的Caddyfile对比

 

自动HTTPS

 

自动 HTTPS 为您的所有站点预置 TLS 证书,并保持其续订状态。它还会为您将HTTP重定向到HTTPS!Caddy 使用安全和现代的默认值 - 无需停机时间、额外配置或单独的工具。Caddy使用Let's Encrypt  或ZeroSSL证书通过HTTPS提供公共DNS名称。Caddy 会更新所有托管证书,并自动将 HTTP(默认端口 80)重定向到 HTTPS(默认端口 443)。





总结



总的来说Caddy是一个很容易上手的web服务器,它具备的自动HTTPS功能还是很有帮助的,另外它的灵活性和扩展性也很吸引人,如果有兴趣的话可以自己动手来试一试。

    




项目信息



  • 项目名称:caddy

  • GitHub 链接:https://github.com/caddyserver/caddy

  • Star 数:56K



往期推荐

浏览器书签秒变导航站,有手就行

GraphRAG门槛高,试试更小、更快、更干净的 GraphRAG

「Github一周热点32期」动画图解算法教程、用LLM写完整报告等5个项目


  




识别二维码关注我们
微信号- it-coffee
B站 - IT-咖啡馆
头条号- IT咖啡馆

IT咖啡馆
开源项目、IT技能和有趣的事情
 最新文章