Caddy一个强大的web服务器和代理服务器
什么是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服务器和代理服务器的更多相关文章
- 自己动手模拟开发一个简单的Web服务器
开篇:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的W ...
- 一个简单的web服务器
写在前面 新的一年了,新的开始,打算重新看一遍asp.net本质论这本书,再重新认识一下,查漏补缺,认认真真的过一遍. 一个简单的web服务器 首先需要引入命名空间: System.Net,关于网络编 ...
- [置顶] 在Ubuntu下实现一个简单的Web服务器
要求: 实现一个简单的Web服务器,当服务器启动时要读取配置文件的路径.如果浏览器请求的文件是可执行的则称为CGI程序,服务器并不是将这个文件发给浏览器,而是在服务器端执行这个程序,将它的标准输出发给 ...
- (一)一个简单的Web服务器
万丈高楼平地起,首先我们必须了解 超文本传输协议(HTTP) 以后才能够比较清晰的明白web服务器是怎么回事. 1. 浅析Http协议 HTTP是一种协议,允许web服务器和浏览器通过互联网进行来发送 ...
- Tomcat剖析(一):一个简单的Web服务器
Tomcat剖析(一):一个简单的Web服务器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三):连接器 ...
- 自己模拟的一个简单的web服务器
首先我为大家推荐一本书:How Tomcat Works.这本书讲的很详细的,虽然实际开发中我们并不会自己去写一个tomcat,但是对于了解Tomcat是如何工作的还是很有必要的. Servlet容器 ...
- 利用 nodeJS 搭建一个简单的Web服务器(转)
下面的代码演示如何利用 nodeJS 搭建一个简单的Web服务器: 1. 文件 WebServer.js: //-------------------------------------------- ...
- 《深度解析Tomcat》 第一章 一个简单的Web服务器
本章介绍Java Web服务器是如何运行的.从中可以知道Tomcat是如何工作的. 基于Java的Web服务器会使用java.net.Socket类和java.net.ServerSocket类这两个 ...
- 一个简单的Web服务器-支持Servlet请求
上接 一个简单的Web服务器-支持静态资源请求,这个服务器可以处理静态资源的请求,那么如何处理Servlet请求的呢? 判断是否是Servlet请求 首先Web服务器需要判断当前请求是否是Servle ...
- 一个简单的Web服务器-支持静态资源请求
目标 实现一个简单的Web服务器,能够根据HTTP请求的URL响应对应的静态资源,如果静态资源不存在则响应404. HttpServer 使用ServerSocket实现的一个服务器,request根 ...
随机推荐
- c# 调用DeepAI
包括画卡通画,找出2张图片的相似度,电脑做梦的图片生成,利用GTP-2的文本续写. using System; using System.Collections.Concurrent; using S ...
- MySQL 开启配置binlog以及通过binlog恢复数据
-------------------------------------------------------------------------------------- # 查看binlog的列表 ...
- ClickHouse-3引擎
引擎 数据库引擎 index 表引擎 数据库引擎 数据库引擎允许您处理数据表. 默认情况下,ClickHouse使用Atomic数据库引擎.它提供了可配置的table engines和SQL dial ...
- IO流:原理、流的分类、体系结构
Java IO原理 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输.如读/写文件,网络通讯等. Java程序中,对于数据的输入/输出操作以 &q ...
- Django和FastAPI的比较
在 Python 的 Web 开发领域,Django 和 FastAPI 是两款备受瞩目的框架. 通过对二者的实践与比较,本文总结了它们的特点与适用场景,希望能给开发者在选择时提供参考. 1. 设计理 ...
- 浅谈Redis的三种集群策略及应用场景
本文分享自天翼云开发者社区<浅谈Redis的三种集群策略及应用场景>,作者:段林 Redis提供了三种集群策略: 1.主从模式:这种模式⽐较简单,主库可以读写,并且会和从库进⾏数据同步,这 ...
- 使用Reids实现简单消息队列
队列操作 简单队列 利用List数据结构可以实现简单的队列,在于使用List提供插入和移除api来完成简单队列操作: 准备数据 获取数据 后入先出 使用redis提供的apiLPOP可以从队列左边获取 ...
- Docker部署 .Net程序
项目准备 首先创建一个项目,这里准备的是api项目,当然也可以是其他项目,按照自己需要的项目创建即可: 添加Dockerfile 接下来添加Dockfile文件,Dockerfile文件是Do ...
- 解密prompt系列48. DeepSeek R1 & Kimi 1.5长思维链 - RL Scaling
春节前DeepSeek R1和Kimi1.5炸翻天了,之前大家推测的O1的实现路径,多数都集中在MCTS推理优化,以及STaR等样本自优化方案等等,结果DeepSeek和Kiim直接出手揭示了reas ...
- Android 监听短信数据库过滤获取短信内容上传至服务器
前言 Android 监听短信的方式有两种 1.监听短信数据库,数据库发生改变时回调. 2.监听短信广播 其中第二种方式由于国内各厂家的定制Android 可能导致无响应 目前测试 魅族 无法监听到短 ...