当前位置: 首页 > news >正文

Caddy是什么

Caddy 是一个支持 HTTP/2 的跨平台 Web 服务器,使用和配置都非常简单。Caddy 支持 HTTP/2, IPv6, Markdown, WebSockets, FastCGI, 模板等等。

Caddy

Caddy 服务器是一个开源的,使用 Golang 编写,支持 HTTP/2 的 Web 服务端。它使用 Golang 标准库提供 HTTP 功能。 Caddy 一个显著的特性是默认启用 HTTPS。它是第一个无需额外配置即可提供 HTTPS 特性的 Web 服务器。

Caddy 支持各种 Web 技术,提供静态编译的二进制文件,支持 i386、amd64 和 ARM 架构上的 Windows、Mac、Linux、Android 和 BSD 操作系统。

功能
Caddy 可以提供各种网站技术,它也可以作为反向代理和负载均衡器。Caddy 的大部分功能都以中间件的形式实现,并通过 Caddyfile 中的指令(用于配置 Caddy 的文本文件)进行控制。

HTTP/1.1 (原始的 HTTP) and HTTP/2 (HTTPS 的推荐连接方案)
HTTPS,同时接受自动签发和手动管理
TLS 1.2 临时性支持(旧协议)
SNI
OCSP 证书交换验证
虚拟主机 (多个站点工作在单个端口上)
原生 IPv4 和 IPv6 支持
静态文件分发
平滑重启/重载
反向代理 (HTTP 或 WebSocket)
负载均衡和健康性检查
FastCGI 支持
配置文件模板
Markdown 渲染
CGI 通过 WebSocket
Gzip 压缩
简单服务器鉴权
URL 重写
重定向
文件浏览服务
访问日志
实验性 QUIC 支持
安全
Caddy 免于很多已知的 CVEs 攻击 (包括 Heartbleed, DROWN, POODLE, 和 BEAST),另外, Caddy 使用 TLS_FALLBACK_SCSV 以防止协议降级攻击。

2015 年 6 月 2 日,版本 0.7.1 修复了 Caddy 简单服务器鉴权中间件中时间欺诈攻击的漏洞。

关于协议和密码包,Caddy 使用 TLS 1.0-1.2,并且倾向于 ECDHE ECDSA 与 AES256-GCM-SHA384,支持十几种不同的加密方式。Cloudflare 已经使用了 Caddy 作为 TLS 1.3 的实现方案。

传统的特权降级无法工作在 Golang 程序上。为了绑定低于 1024 的端口, Caddy 必须使用 root 账户运行 (不建议) 或通过 setcap 给予低位端口使用权限 (建议的) 。 并且,在将来的版本中会尝试使用非特级子进程运行。

Caddy 没有自动启动 HTTP Strict Transport Security,推荐通过 Caddy 的 header 配置启用 HSTS。

自动签发 HTTPS
Caddy 默认通过检查域名来启用 HTTPS (通过 ACME protocol 检查域名并签发证书), 并且重定向 HTTP 请求到 HTTPS。它在启动期间根据需要签发证书,并在服务器的使用期间自动重签发。 Let’s Encrypt 是默认的证书颁发机构,但用户可以自定义所使用的 ACME CA,这在测试配置时是必要的。在 2016 年第一季度, 有百分之二的 Let’s Encrypt 证书是由 Caddy 签发的。

一个可选的配置允许 Caddy 在需要时签发一个证书 “按需 TLS”使用这种方案时,用户必须指定可通过该方案配置的证书数量。 当 Caddy 收到一个没有配置证书的请求时, 它会自动通过 ACME 签发并配置, 然后将证书存储于内存和硬盘。 这个过程通常需要几秒钟的时间,并且受到限制。

当使用 TLS, Caddy 会自动切换会话密钥以保证安全性。

相关文章:

  • 脐带间充质干细胞
  • 取暖器遇上智能化!一张床如何分区温控,节能又好用
  • w字符编码
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • 【CSAPP】深入理解计算机系统 第九章 虚拟内存 动态链接 printf 17/26
  • 软文营销评论区怎样营造好的氛围?
  • Android Gradle plugin requires Java 11 问题解决
  • mysql安装,安装mysql配置教程(超级详细图解)
  • 为什么现在西红柿都“硬邦邦”的,放几个星期都不会坏?为你解答
  • java实现微信小程序获取手机号(htts接口实现)
  • 亚马逊,速卖通,国际站卖家为什么要做测评
  • Centos7搭建sftp服务器,开启SFTP上报日志
  • 模式识别课程混合式教学设计
  • 基于云原生的视频管理系统设计与实现
  • AOP的使用(详细讲解)
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • Angular 4.x 动态创建组件
  • const let
  • Java 网络编程(2):UDP 的使用
  • JavaScript新鲜事·第5期
  • leetcode-27. Remove Element
  • MySQL主从复制读写分离及奇怪的问题
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • SpringBoot几种定时任务的实现方式
  • 给第三方使用接口的 URL 签名实现
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 盘点那些不知名却常用的 Git 操作
  • 前端之Sass/Scss实战笔记
  • 使用 5W1H 写出高可读的 Git Commit Message
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #微信小程序:微信小程序常见的配置传值
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Oracle)SQL优化技巧(一):分页查询
  • (ZT)一个美国文科博士的YardLife
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (分享)自己整理的一些简单awk实用语句
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (南京观海微电子)——I3C协议介绍
  • (转) Android中ViewStub组件使用
  • .md即markdown文件的基本常用编写语法
  • .Mobi域名介绍
  • .NET 设计一套高性能的弱事件机制
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET 依赖注入和配置系统
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [Angular] 笔记 20:NgContent