Resin
Resin 是聚合大量代理订阅、提供统一入口、健康检查、调度与固定出口 IP 的智能代理池网关。
[!info] related notes
- 相关主题: Clash、sing-box、正向代理与反向代理、Nginx 反向代理与负载均衡、代理协议、网络代理节点架构、代理节点、MCP Gateway 架构演进、Docker 代理配置
- 相关 MOC: VPS 应用 - 网络代理 MOC、机场与代理订阅 MOC
- 相关 howto:
- 相关方案: oracle3 cc-switch 国内中转站经家庭出口分流方案(Resin 作为演进出口调度层接入)
Resin
这是什么
Resin 是一个代理池网关(proxy pool gateway)。它把 Clash、sing-box、HTTP/SOCKS5 代理等大量节点统一接入,对外只暴露一个稳定的代理地址(默认 服务器IP:2260),由它自动选择健康、低延迟的节点转发请求。
一句话类比:Clash / sing-box 解决「我这台设备如何使用代理」,Resin 解决「我的服务如何管理和调度大量代理节点」。
它更接近「面向代理节点的 Nginx + 负载均衡器 + 健康检查系统 + 会话绑定系统」——但底层仍然需要真实的代理节点(来自机场、自建或商业代理),本身不提供 IP,也不是机场。
支持导入:Clash YAML、sing-box JSON,以及 vmess://、vless://、trojan://、ss://、hysteria2://、HTTP、SOCKS5 等格式(见 代理协议)。
解决什么问题 / 适合谁
当你手里有多个机场订阅、成百上千个节点、住宅/数据中心代理,以及多个需要代理访问外部服务的程序时,直接让每个程序自己连节点会出现:节点失效、延迟忽高忽低、出口 IP 频繁变化、重复配置订阅、难定位故障节点、难让同一账号持续使用同一 IP。
Resin 放在业务程序与节点之间,负责:
- 导入和聚合代理订阅
- 检查节点可用性
- 测量节点延迟和出口 IP
- 自动剔除故障节点
- 自动挑选合适节点
- 为不同业务建立独立节点池
- 记录请求、节点状态与调度信息
官方定位为面向大量代理节点的高性能智能代理池网关,设计目标可处理十万级节点。适合「多订阅、多服务、需要自动容灾、地区分池、统一管理或固定账号出口 IP」的场景。
工作方式 / 架构概览
你的程序
↓
Resin 统一入口:服务器IP:2260
↓
自动选择健康、低延迟的代理节点
↓
目标网站 / API
节点来源与落地的物理架构见 网络代理节点架构 与 代理节点。
核心能力
Sticky Session / 固定出口 IP
这是 Resin 比普通负载均衡器更重要的能力:粘性会话,即固定出口 IP。
例如调用某平台时,user_001 的请求会尽量持续分配到同一个节点(香港节点 A / 出口 IP 1.2.x.x),而不是每次随机换节点。很多网站会检测同一账号是否频繁切换 IP、IP 所在国家是否突变、登录会话是否异常、Cookie 与出口 IP 是否匹配。
把业务身份作为 Account 传进去:
curl -x http://127.0.x.x:2260 \
-U "Default.user_001:my-token" \
https://api.ipify.org
Default:代理池名称(Platform)user_001:业务账号my-token:Resin 代理密码
相同 Platform.Account 会尽量绑定同一节点和出口 IP;节点失效时执行故障转移。
Platform:独立节点池与过滤
Platform 是一个经过筛选的独立代理池。可按以下维度过滤:国家或地区、订阅来源、节点名称正则、节点类型等。
Default 所有节点
OpenAI 美国、日本、新加坡节点
Bilibili 中国大陆节点
GitHub 香港、日本、美国节点
Crawler-US 仅美国住宅代理
Crawler-JP 仅日本节点
业务程序只指定 Platform:
curl -x http://服务器IP:2260 \
-U "OpenAI:代理密码" \
https://api.openai.com
三种使用方式
1. HTTP 正向代理(最常见)
curl -x http://127.0.x.x:2260 -U ":my-token" https://api.ipify.org
程序只需设置:
HTTP_PROXY=http://127.0.x.x:2260
HTTPS_PROXY=http://127.0.x.x:2260
适合 Python requests、Node.js、curl、Docker 容器、爬虫、AI API 客户端。
2. SOCKS5 正向代理
curl --proxy socks5h://127.0.x.x:2260 -U "Default:my-token" https://api.ipify.org
适合不支持 HTTP 代理但支持 SOCKS5 的程序。新部署需使用 RESIN_AUTH_VERSION=V1(旧版 LEGACY_V0 不提供 SOCKS5 入站)。
3. 反向代理
原请求:https://api.example.com/v1/orders
改请求:http://resin:2260/my-token/MyPlatform/https/api.example.com/v1/orders
Resin 转发给真实目标。优点:日志更完整、更易知道请求了哪个 API、更易按账号实现粘性路由、部分客户端只需改 BASE_URL。官方在客户端支持修改 Base URL 时更推荐反向代理,以获得更好的可观测性。
与 Clash / sing-box 的区别
| 工具 | 主要用途 |
|---|---|
| Clash | 个人电脑、手机、路由器代理分流 |
| sing-box | 通用代理核心、协议转换、路由和隧道 |
| Resin | 大量代理节点的汇总、健康检查、调度、固定会话和统一入口 |
Resin 底层仍依赖真实节点,不凭空提供 IP,更接近「面向代理节点的 Nginx + 负载均衡器 + 健康检查系统 + 会话绑定系统」。
与 MCP Gateway 的区别
两者不是同类工具,但可以组合:
AI Agent → MCP Gateway → 某需要访问国外 API 的 MCP Server → Resin → 代理节点 → 目标 API
- MCP Gateway:管理 MCP Server、工具调用、鉴权和协议连接
- Resin:管理代理节点、出口 IP、网络请求和节点调度
最简部署(Docker Compose)
官方推荐 Docker Compose,核心配置:
services:
resin:
image: ghcr.io/resinat/resin:latest
container_name: resin
restart: unless-stopped
environment:
RESIN_AUTH_VERSION: V1
RESIN_ADMIN_TOKEN: "修改成后台管理密码"
RESIN_PROXY_TOKEN: "修改成代理连接密码"
RESIN_LISTEN_ADDRESS: 0.0.x.x
RESIN_PORT: 2260
ports:
- "2260:2260"
volumes:
- ./data/cache:/var/cache/resin
- ./data/state:/var/lib/resin
- ./data/log:/var/log/resin
docker compose up -d
浏览器打开 http://服务器IP:2260,输入 RESIN_ADMIN_TOKEN 后添加 Clash 或 sing-box 订阅。官方同时提供单文件二进制和源码构建方式。所有下游服务只需统一配置:
HTTP_PROXY=http://resin:2260
HTTPS_PROXY=http://resin:2260
(容器内需代理访问外网时,参见 Docker 代理配置。)
安全提醒
不要直接把 2260 暴露到公网。更适合:
- 只监听内网
- 通过 Tailscale 访问
- 使用防火墙限制来源 IP
- 至少设置强代理密码和后台密码
适用边界
你只有两三个稳定节点时,直接使用 sing-box 就够了;当你有多个订阅、多个服务,需要自动容灾、地区分池、统一管理或固定账号出口 IP 时,Resin 才真正有价值。
相关链接 / 官方入口
- GitHub:Resinat/Resin