什么是Caddy

Caddy是一个强大的、可扩展的平台,可以为您的站点、服务和应用程序提供服务,它是用Go编写的。虽然大多数人使用它作为web服务器或代理,但其实他支持更多的功能:

  • Caddy是唯一自动且默认使用HTTPS的web服务器。
  • web服务器
  • 反向代理
  • sidecar代理
  • 负载均衡器
  • API网关
  • ingress控制器
  • 系统管理器
  • 进程supervisor
  • 任务调度器
  • (任何长时间运行的进程long-running process)
  • 简单的配置与Caddyfile
  • 强大的配置和它的原生JSON配置
  • 使用JSON API进行动态配置
  • 如果不喜欢JSON,配置适配器
  • 默认自动HTTPS,让我们加密公共站点,内部名称和ip的全托管本地CA,可以与集群中的其他Caddy实例协调吗
  • 避免其他服务器由于TLS/OCSP/与证书相关的问题而宕机时
  • HTTP/1.1、HTTP/2和实验性HTTP/3支持
  • 高度可扩展的模块化架构让Caddy做任何事情都不会臃肿
  • 在任何没有外部依赖的地方运行(甚至libc也不行)
  • 用Go编写,一种比其他服务器具有更高内存安全保证的语言

简化的外部依赖

Caddy简化了你的基础设施。它负责TLS证书更新、OCSP绑定、静态文件服务、反向代理、Kubernetes访问等。

它的模块化架构意味着您可以使用为任何平台编译的单个静态二进制文件做更多的事情。

Caddy在容器中运行得很好,因为它没有依赖项—甚至libc也没有。几乎在任何地方都能运行Caddy。

一流的安全

Caddy是唯一自动且默认使用HTTPS的web服务器。

Caddy为您的站点自动获取和更新TLS证书。它甚至会固定OCSP响应。其新颖的证书管理功能是同类产品中最成熟、最可靠的。

用Go编写的Caddy提供了比用c编写的服务器更大的内存安全性。

文件服务器和代理

Caddy是一个灵活、高效的静态文件服务器,也是一个强大的、可伸缩的反向代理。

使用它来为您的静态站点提供压缩、模板评估、Markdown呈现等服务。

或者将其用作任意数量后端的动态反向代理,包括主动和被动健康检查、负载平衡、断路、缓存等等。

下载和安装

下载非常简单:

wget "https://github.com/caddyserver/caddy/releases/latest/download/ASSET"
docker pull caddy
如果需要安装为service,参考https://caddyserver.com/docs/install

零配置文件服务器

启动当前目录为文件服务器:
caddy file-server
启动当前目录为文件服务器,且支持https:
caddy file-server --domain example.com
方向代理:
caddy reverse-proxy --from example.com --to localhost:9000
使用mysite目录:
caddy file-server --root ~/mysite

Caddy通过配置文件运行

启动server,且支持https,反向代理,压缩,和模板

example.com  

# Templates give static sites some dynamic features
templates # Compress responses according to Accept-Encoding headers
encode gzip zstd # Make HTML file extension optional
try_files {path}.html {path} # Send API requests to backend
reverse_proxy /api/* localhost:9005 # Serve everything else from the file system
file_server

caddy同一服务器支持多个域名

mysite.com {
root /www/mysite.com
} sub.mysite.com {
root /www/sub.mysite.com
gzip
log ../access.log
}

参考

https://caddyserver.com/

https://github.com/caddyserver/caddy

Caddy一个强大的web服务器和代理服务器的更多相关文章

  1. 自己动手模拟开发一个简单的Web服务器

    开篇:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的W ...

  2. 一个简单的web服务器

    写在前面 新的一年了,新的开始,打算重新看一遍asp.net本质论这本书,再重新认识一下,查漏补缺,认认真真的过一遍. 一个简单的web服务器 首先需要引入命名空间: System.Net,关于网络编 ...

  3. [置顶] 在Ubuntu下实现一个简单的Web服务器

    要求: 实现一个简单的Web服务器,当服务器启动时要读取配置文件的路径.如果浏览器请求的文件是可执行的则称为CGI程序,服务器并不是将这个文件发给浏览器,而是在服务器端执行这个程序,将它的标准输出发给 ...

  4. (一)一个简单的Web服务器

    万丈高楼平地起,首先我们必须了解 超文本传输协议(HTTP) 以后才能够比较清晰的明白web服务器是怎么回事. 1. 浅析Http协议 HTTP是一种协议,允许web服务器和浏览器通过互联网进行来发送 ...

  5. Tomcat剖析(一):一个简单的Web服务器

    Tomcat剖析(一):一个简单的Web服务器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三):连接器 ...

  6. 自己模拟的一个简单的web服务器

    首先我为大家推荐一本书:How Tomcat Works.这本书讲的很详细的,虽然实际开发中我们并不会自己去写一个tomcat,但是对于了解Tomcat是如何工作的还是很有必要的. Servlet容器 ...

  7. 利用 nodeJS 搭建一个简单的Web服务器(转)

    下面的代码演示如何利用 nodeJS 搭建一个简单的Web服务器: 1. 文件 WebServer.js: //-------------------------------------------- ...

  8. 《深度解析Tomcat》 第一章 一个简单的Web服务器

    本章介绍Java Web服务器是如何运行的.从中可以知道Tomcat是如何工作的. 基于Java的Web服务器会使用java.net.Socket类和java.net.ServerSocket类这两个 ...

  9. 一个简单的Web服务器-支持Servlet请求

    上接 一个简单的Web服务器-支持静态资源请求,这个服务器可以处理静态资源的请求,那么如何处理Servlet请求的呢? 判断是否是Servlet请求 首先Web服务器需要判断当前请求是否是Servle ...

  10. 一个简单的Web服务器-支持静态资源请求

    目标 实现一个简单的Web服务器,能够根据HTTP请求的URL响应对应的静态资源,如果静态资源不存在则响应404. HttpServer 使用ServerSocket实现的一个服务器,request根 ...

随机推荐

  1. 从单体架构、到SOA、再到微服务的架构设计详解

    本文涉及的内容以及知识点如下: 1.单体架构 2.单体架构的拆分 3.SOA与微服务的区别 4.微服务的优缺点 5.微服务的消息 6.服务集成 7.数据的去中心化 单体架构 Web应用程序发展的早期, ...

  2. 史上最强Dubbo面试28题答案详解

    1.Dubbo是什么? Dubbo 是一个分布式.高性能.透明化的 RPC 服务框架,提供服务自动注册.自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成. RPC 指的是远程调用协议, ...

  3. Superset 下钻与交叉筛选

    以下内容来自外网:https://github.com/apache/superset/issues/6774 具体查看外网,我目前还没有琢磨,如果你有了思路请再下方留言 下面这个网址也有个交叉筛选: ...

  4. .NET9 AOT部署

    概念 AOT是Ahead-of-Time的缩写,AOT是将C#程序提前编译为机器代码(通常为平台特定的二进制文件),在应用程序启动之前完成编译过程. 微软官方文档是这样说的 将应用程序发布为本机 AO ...

  5. .NET最佳实践:避免同步读取HttpRequest

    为什么要避免同步读取 ASP.NET Core 中的所有 I/O 操作都是异步的.服务器实现了 Stream 接口,该接口同时具备同步和异步的方法. 在进行 I/O 操作时,应优先使用异步方法,以避免 ...

  6. Mac安装Zookeeper

    软件版本:3.4.10   一.软件下载 下载链接:http://archive.apache.org/dist/zookeeper/  解压缩:tar -zxf zookeeper-3.4.10.t ...

  7. 在windows主机本地快速部署使用deepseek-r1大模型

    一台配备 Windows 操作系统.12GB 或以上显存的英伟达显卡.8GB 或以上内存,并能连接互联网的电脑可以继续阅读以下内容. 简介 Ollama(用于下载和启动大模型) Ollama 专注于本 ...

  8. [WC2014] 紫荆花之恋 题解

    啊啊啊啊啊啊啊啊啊啊啊我终于改完啦啊啊啊啊啊啊啊. 因为没有在最开始的时候将所有点设置为已经重构的,所以直接 \(R15-R70\) 间卡了两三天. 似乎也是我第一次大规模使用指针了. 这道题假如只有 ...

  9. HTTP请求中包含账号密码

    如果你需要在HTTP请求中包含账号密码,你可以使用基本的HTTP身份验证.在C#中,你可以通过设置 HttpClient 的 DefaultRequestHeaders 来添加身份验证信息.以下是修改 ...

  10. 使用PySide6/PyQt6实现Python跨平台通用列表页面的基类设计

    我在随笔<使用PySide6/PyQt6实现Python跨平台GUI框架的开发>中介绍过PySide6/PyQt6 框架架构的整体设计,本篇随笔继续深入探讨框架的设计开发工作,主要针对通用 ...