一个用 Go 编写的单二进制下载网关,提供验证码校验与七牛 CDN 时间戳防盗链签名。
核心依赖如下:
github.com/julienschmidt/httprouter:高性能路由分发。go.uber.org/zap:低开销结构化日志。github.com/goccy/go-json:高性能 JSON 编解码。github.com/mojocn/base64Captcha:验证码生成与内存存储。github.com/qiniu/go-sdk/v7:七牛 CDN 时间戳防盗链签名。
服务内部将配置快照存于 atomic.Pointer,请求读路径无锁,配置热重载通过 SIGHUP 完成。
配置文件:/app/config.json
{
"baseURL": "http://a.com/",
"encryptKey": "xxxx",
"deadline": 60,
"enableCaptcha": true
}docker run --rm --name authdl \
-p 8080:8080 \
-v ./config.json:/app/config.json \
qvgz/authdl# 查看版本
./authdl version
# 检查配置
./authdl check
# 热重载配置(向运行进程发送 SIGHUP)
./authdl reloadGET /healthz:健康检查。
验证码默认使用内存存储,/api/captcha 建议在反向代理层做限流,避免高频请求导致内存压力。
# nginx 示例
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
location /api/captcha {
limit_req zone=one burst=10 nodelay;
proxy_pass http://127.0.0.1:8080;
}