声明式路由
精确 / 通配 / 正则 Host,前缀 / glob / 正则 Path,方法、Header、Query、客户端 CIDR 条件;改写与请求模拟器。
Chimichurri 是一套自托管的 Rust 边缘平台。路由、缓存、WAF、自动证书与 DNS、Luau 脚本, 以及把你的应用直接部署到 Edge 节点——每一次变更都是可审计、可回滚的不可变快照。
Edge 把站点规则编译成有序流水线。挑一个场景,看请求在哪一步被放行、改写、缓存或拦下。
每一样都是 Edge 原生实现、随快照一起下发,不需要再拼装 Nginx 模块和外部脚本。
精确 / 通配 / 正则 Host,前缀 / glob / 正则 Path,方法、Header、Query、客户端 CIDR 条件;改写与请求模拟器。
原子本地文件、容量 / LRU、安全 Key 与 Vary 规则、stale 策略,以及由 Control 协调的多节点 Purge。
动态 SNI 证书、HTTP-01 与 DNS-01 通配符签发、自动续期、HSTS 与 HTTP→HTTPS,私钥加密存储。
请求 / 响应 / 日志钩子与 fetch(ctx) 函数路由,预编译、VM 池化,并带内存与指令中断上限。
www.example.comSYNCEDapp.example.comSYNCEDcdn.example.comWAITING按部署标签把健康 Edge 写入 Cloudflare A / AAAA;节点变化即时全量对账,没有健康节点时保留旧记录而不是删除。
按时区、CIDR、GeoIP 国家 / 城市、UA、方法与 Header 的有序策略;可信代理还原客户端 IP;滑动窗口限流。
每次发布都把草稿编译成内容寻址的快照。Edge 自己拉取、校验、编译、暂存,再原子切换并回执;任何一步失败,节点继续服务旧版本,回滚只是再发布一个新 Revision。
sha256:—
上传压缩包或填写公开 Git 仓库。远程 Build Worker 用 Nixpacks / Dockerfile / Compose 构建出不可变 Bundle,Edge 上的 Container Supervisor 校验后运行,并作为 managed_app 源站接入已有站点、证书和缓存。
github.com/you/hello-node
Dockerfile
sha256:…
按架构放置
hello.example.com
Serverless 按节点选择启用:普通 CDN 节点不需要 Docker。架构不匹配的目标会停在 WAITING_FOR_EDGES 并给出原因,已有实例不受影响。
托管检测组复用 OWASP CRS v4.29.0 的模式数据,SQLi / XSS 由 libinjection 与精选 CRS 正则检测。每条命中累加分数,超过阈值才拦截;先 log 再 block。
控制台里的每个表单最终都落成同一份可 Diff 的快照 JSON;脚本是快照的一部分,和规则一起原子激活。
{
"id": "default",
"priority": 1,
"match": { "methods": [], "path": { "type": "prefix", "value": "/" } },
"steps": [
{ "type": "waf", "policy_ref": "edge_waf" },
{
"type": "rate_limit",
"id": "default-per-ip",
"key": { "client_ip": true, "host": false, "path_prefix_segments": 0, "headers": [] },
"window_seconds": 60,
"max_requests": 300,
"deny_status": 429
}
],
"action": { "type": "proxy", "origin_pool": "web" }
}
-- 在代理前运行;可以改写请求,也可以直接应答
function on_request(ctx)
ctx.request.headers["x-chimichurri-script"] = "ran"
ctx.vars.bucket = "blue"
if ctx.request.path == "/script" then
ctx.response.status = 200
ctx.response.headers["content-type"] = "text/plain"
ctx.response.headers["x-script-bucket"] = ctx.vars.bucket
ctx.response.body = "hello from Luau\n"
end
end
-- route.action = { "type": "function", "script_ref": "hello_function" }
function fetch(ctx)
return {
status = 200,
headers = { ["content-type"] = "text/plain; charset=utf-8" },
body = "hello from serverless " .. ctx.request.path
}
end
# Control 的公开健康检查
curl -s https://chimichurri.ikechan8370.com:48370/healthz
{"status":"ok","active_revision":…}