上一篇:为什么祖传代码被称为「屎山」?
Hello,大家好,我是 Tabber。
今天给大家推荐一款逼格超高的开源的 Web 服务器 Caddy。
对于每一名开发工程师,需要经常与Web服务器打交道,我们经常需要在不同平台部署项目,免不了要使用Nginx/Tomcat 等Web服务器来进行项目部署。现在比较常用的终端工具主要有 Nginx、Tomcat 以及 Apache。今天来给大家推荐一款全新的开源Web服务器 Caddy。
简介
Caddy 2是一个强大的、企业级的、开源的Web服务器,使用用Go编写的自动化HTTPS Web服务器,适用于 Windows、macOS 和 Linux。GitHub上获星39.1K。
特性:
-
使用Caddyfile轻松配置
-
强大的配置及其原生 JSON 配置
-
使用JSON API进行动态配置
-
如果您不喜欢 JSON,请使用ConfigAdapter
-
默认自动 HTTPS
-
ZeroSSL和Let's Encrypt用于公共名称
-
用于内部名称和 IP 的完全托管的本地 CA
-
可以与集群中的其他 Caddy 实例协调
-
多发行人后备
-
当其他服务器因 TLS/OCSP/证书相关问题而停机时保持正常运行
-
在处理数万亿个请求并管理数百万个 TLS 证书后,可投入生产
-
扩展到数以万计的站点......而且可能更多
-
HTTP/1.1、HTTP/2 和实验性 HTTP/3支持
-
高度可扩展的 模块化架构让 Caddy 做任何事情都不会臃肿
-
在没有外部依赖的任何地方运行(甚至没有 libc)
-
用 Go 编写,一种比其他服务器具有更高内存安全保证的语言
-
其实用起来很有趣
-
所以,还有更多的发现
功能:
-
一个 开源Web服务器+各种扩展
-
默认HTTPS
-
通过API配置
-
无依赖第三方库
-
模块化堆栈
-
静态网站/动态网站
-
文件服务器
-
反向代理/动态配置/可扩展核心
-
支持插件
下载/安装:
目前 Caddy 最新的版本为2.4.6,大家可以到官网(https://caddyserver.com/)、Github(https://github.com/caddyserver/caddy)下载最新的版本进行安装使用。
RHEL/CentOS 7安装方式:
yum install yum-plugin-copr
yum copr enable @caddy/caddy
yum install caddy
安全和隐私
Caddy 2的旗舰功能是安全和隐私。Caddy 是第一个也是唯一一个默认自动启用 HTTPS 的 Web 服务器。
TLS 1.3
TLS 1.3 是最新的传输安全标准,比其前身更快、更安全。
加密功能
Caddy 默认使用最好的加密技术,包括 AES-GCM、ChaCha 和 ECC,平衡了安全性和兼容性。您可以自定义允许使用的密码。
内存安全
Caddy 是同类中唯一不受 Heartbleed 和缓冲区溢出等错误影响的 Web 服务器,因为它是用 Go 的内存安全语言编写的。
客户端认证
使用 TLS 客户端身份验证,您可以将 Caddy 配置为仅允许某些客户端连接到您的服务。
硬化堆栈
Caddy 自豪地用 Go 编写,其 TLS 堆栈由 Go 标准库中强大的 crypto/tls 包提供支持,受到世界上最大的内容分发商的信任。
符合 PCI 标准
公司之所以选择 Caddy,是因为其 TLS 配置默认符合 PCI 标准。它甚至在失去认证之前为一些公司节省了几个小时!
可扩展存储
TLS 资产存储在磁盘上,但可以将存储机制换成自定义实现,这样您就可以部署和协调一组 Caddy 实例。
密钥轮换
Caddy 被引用为默认情况下轮换 TLS 会话票证密钥的唯一 Web 服务器。这有助于保持前向保密,即访问者隐私。
服务器域名指向
Caddy 使用 TLS 扩展服务器名称指示 (SNI) 能够在单个界面上托管多个站点。像大多数功能一样,这很有效。
将 HTTP 重定向到 HTTPS
Caddy 的自动 HTTPS功能包括默认为您将 HTTP 重定向到 HTTPS。
服务器特色
使用 Caddy 有吸引力、实用的设计或根据您自己的自定义模板列出文件和文件夹。
虚拟主机
使用 Caddyfile 从同一 IP 地址为多个站点提供服务。
可配置绑定
您可以选择将侦听器绑定到哪些网络接口,从而为您提供对站点的更多访问控制。
模板
作为服务器端包含的强大且改进的替代方案,模板允许您快速轻松地制作半动态站点。
Markdown
让 Caddy 将您的 Markdown 文件即时呈现为 HTML。您可以将 Markdown 嵌入模板并解析出前面的内容。
自定义错误页面
出现问题时显示用户友好的错误页面,或将错误详细信息写入开发环境的浏览器。
日志记录
Caddy 根据您喜欢的日志格式记录大量日志。将错误和请求记录到文件、stdout/stderr 或本地或远程系统日志。
请求大小限制
您可以限制通过 Caddy 的请求正文的大小,以防止滥用网络带宽。
超时
当您的服务器可能容易受到慢速攻击或您想从慢速网络中释放资源时,启用超时可能是一个好主意。
反向代理
反向代理是作为Web服务最为常用的功能了,Caddy又怎能少呢。
基本代理
Caddy 可以充当 HTTP 请求的反向代理。您还可以使用一行配置透明代理(保留原始 Host 标头)。
负载均衡
使用您选择的负载平衡策略代理到多个后端:随机、最少连接、循环、IP 哈希或标头。
SSL
由于其强大的 TLS 功能,Caddy 经常被用作 TLS 终结器。
WEBSOCKET 代理
Caddy 的代理中间件也能够代理到后端的 websocket 连接。
健康检查
Caddy 将有问题的后端标记为不健康,您可以配置健康检查路径、间隔和超时以获得最佳性能。
重试
当对后端的请求无法连接时,Caddy 将尝试与其他后端的请求,直到在线的后端接受连接。
HEADER控制
默认情况下,大多数标头都将通过,但您可以控制哪些标头流向上游和下游。
动态后端
根据请求参数(例如域名或标头值的一部分)代理到任意后端。
PS:如果觉得我的分享不错,欢迎大家随手点赞、转发、在看。
END
有热门推荐?
1. 再见了Xshell、iTerm2,这款开源的终端工具真香!
3. JetBrains 发布全新轻量编辑器 Fleet,号称“下一代 IDE”
老规矩,文末上图
文章评论