最新消息更新在: https://q58.org/t/topic/127?u=wood
仓库地址
https://github.com/woodchen-ink/random-api-go
示例和使用链接
https://random-api.czl.net
前景提要
原来的nodejs和worker版本: https://q58.org/t/topic/20
之所以使用go重构, 还是因为性能和并发问题. 使用go重构后, 单个处理速度一般在5微秒, 内存占用低至4M
特性
- 动态加载和缓存 CSV 文件内容
- 支持图片和视频随机分发
- 可自定义的 URL 路径配置
- Docker 支持,便于部署和扩展
- 详细的日志记录
部署方法
docker compose:
https://github.com/woodchen-ink/random-api-go/blob/main/docker-compose.yml
解释:
- public目录放
index.html
index.md
css
文件等, 如果刚创建容器, 会自动复制一份项目里的过去, 按需修改即可 - data目录里放
server.log
stats.json
, 分别是日志和统计数据 BASE_URL
是url.json
里csv文件的请求前缀, 自动适配https, 支持路径
详细步骤
-
新建你的csv文件, 在里面放图片链接, 一行一个, 比如
ecy.csv
, 然后访问路径是https://file.example.com/random/pic/ecy.csv
;
CSV 文件应包含每行一个 URL。例如:https://example.com/image1.jpg https://example.com/image2.jpg https://example.com/image3.jpg
-
新建你的url.json, 访问链接是
https://file.example.com/random/url.json
比如:{ "pic": { "ecy": "pic/ecy.csv" } }
如果你不用
pic
, 改了其他的前缀名称, 那么你需要在下面代码处添加一下, 按照示例即可
https://github.com/woodchen-ink/random-api-go/blob/cbeadf2e48892c37278f7a5d00ed047cb9f04968/main.go#L61
-
部署docker, 按照这个docker-compose.yml
services: random-api-go: container_name: random-api-go image: woodchen/random-api-go:latest ports: - "5003:5003" volumes: - ./public:/root/public - ./data:/root/data environment: - TZ=Asia/Shanghai - BASE_URL=https://file.example.com/random restart: unless-stopped
-
nginx反代5003接口, 示例配置:
location ^~ / { proxy_pass http://127.0.0.1:5003; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; add_header X-Cache $upstream_cache_status; add_header Cache-Control no-cache; proxy_ssl_server_name off; add_header Strict-Transport-Security "max-age=31536000"; }
-
访问
域名/pic/ecy
即会302重定向到图片链接. -
访问
域名
会显示首页, 相关内容自行在public/index.html
,public/index.md
调整.
注意
- 现在版本取消了定期清理csv缓存重新获取的机制, 因为没有必要, 并且会速度变慢. 修改文件后重启容器就会重新获取文件;
- 如果有问题, 记得看容器日志, 日志已经很详细, 并且是中文日志;
- 如果不想单独放静态文件, 那么可以把
url.json
和pic/ecy.csv
放在public目录下, 然后不配置BASE_URL
即可, 在不配置的情况下, 请求域名为当前项目访问域名, 也就是会请求https://random.com/url.json
和https://random.com/pic/ecy.csv
; - 其他疑问请留言
多路径url.json示例:
{
"pic": {
"all": "url/pic/all.csv",
"fj": "url/pic/fj.csv",
"czlwb": "url/pic/czl-website-background.csv",
"truegirl": "url/pic/truegirl.csv",
"truegirl1": "url/pic/truegirl1.csv",
"truegirl2": "url/pic/truegirl2.csv",
"girl-gif": "url/pic/girl-gif.csv",
"ecy": "url/pic/ecy.csv",
"ecy1": "url/pic/ecy1.csv",
"ecy2": "url/pic/ecy2.csv",
"ai": "url/pic/ai.csv",
"loading": "url/pic/loading.csv"
},
"video": {
"all": "url/video/all.csv"
}
}
评论区