环境要求
| 要求 | 最低版本 | 推荐版本 |
|---|---|---|
| Linux 内核 | 5.10 | 6.1+ |
| Rust 工具链 | 1.75 | 最新稳定版 |
| Redis(可选) | 6.0 | 7.x,仅在集群级限流时需要 |
第 1 步:编译
./target/release/arc-gateway。如果你要做开发调试,可去掉 --release 生成带调试符号的版本。
第 2 步:写最小配置
Arc 支持 JSON、TOML、YAML 三种格式,会通过文件后缀自动识别。新建arc.yaml:
第 3 步:启动测试后端
任何监听在 3000 端口的 HTTP 服务都可以。用 Python 内置服务器即可:第 4 步:运行 Arc
第 5 步:验证
添加速率限制
Arc 使用 GCRA(Generic Cell Rate Algorithm)做限流。在任意路由上添加rate_limit:
添加 TLS
先准备证书,再增加一个 TLS 监听器:添加 ACME(Let’s Encrypt)
热更新
Arc 会监控配置文件修改时间。每次修改后可执行:故障排查
Arc 启动了,但 `curl http://localhost:8080/` 连接被拒绝
Arc 启动了,但 `curl http://localhost:8080/` 连接被拒绝
检查监听器
bind 地址和端口是否和你访问的一致。如果你绑定的是 127.0.0.1:8080,那从其他机器访问会被拒绝。io_uring: Operation not permitted
io_uring: Operation not permitted
io_uring 需要 Linux 5.10+。在 5.10 到 5.19 之间,部分 SQPOLL 操作可能需要更高权限。请设置
RLIMIT_MEMLOCK 或使用 CAP_SYS_ADMIN。在容器里还要确认 seccomp 没有拦截 io_uring 相关 syscall。/healthz 返回 401 Unauthorized
/healthz 返回 401 Unauthorized
改了配置但没生效
改了配置但没生效
先确认文件的 mtime 是否真的变化(有些编辑器会先写临时文件再替换)。然后手动发送
SIGHUP:kill -HUP $(pidof arc-gateway)。同时检查 /metrics 里的 arc_config_reload_total 是否有增长。TLS 场景下域名没有返回对应证书
TLS 场景下域名没有返回对应证书
确认
certificates 中的 sni 与访问主机名完全一致,或使用 *.example.com 这种通配符。数组中的第一张证书会作为兜底证书。ACME challenge 校验失败
ACME challenge 校验失败
TLS-ALPN-01 需要 443 端口可达,HTTP-01 需要 80 端口可达。请检查防火墙和监听器
bind 是否对公网可达。ACME 报错会写入访问日志中的 kind: "system" 记录。
