管理 API 文档

用于查询 Minecraft Java TCP 转发状态、读取实时流量指标,以及在线管理转发规则和全局参数。管理接口默认只通过同源 HTTPS 页面访问。

Base URL: /api/v1JSONBearer Tokenv0.2.0

认证说明

/healthz 外,所有接口都必须携带 Authorization: Bearer <管理令牌>。令牌来自服务端环境变量 MC_PROXY_ADMIN_TOKEN,最少 32 个字符。
Authorization: Bearer your-admin-token
Content-Type: application/json
GET/healthz

健康检查

供 Nginx、systemd 或监控系统确认管理 HTTP 服务能够响应。不需要认证。

请求参数

无。

成功响应
HTTP/1.1 200 OK
ok
错误码

服务不可用时由上游返回 502 或连接失败。

GET/api/v1/session

检查管理令牌

登录页面使用该接口验证令牌,不创建服务器端会话。

请求参数

仅 Authorization 请求头。

成功响应
{"ok":true,"data":{"authenticated":true}}
错误码

401:令牌缺失或不匹配。

GET/api/v1/status

读取运行状态

返回实例运行时间、所有规则的聚合指标和逐规则实时指标。上传/下载字节会在数据成功写入另一端后实时累加。

请求参数

无。

成功响应
{
  "ok": true,
  "data": {
    "version": "0.2.0",
    "uptime_seconds": 3600,
    "totals": {
      "accepted_connections": 1200,
      "active_connections": 46,
      "rejected_connections": 0,
      "backend_failures": 2,
      "forwarding_failures": 1,
      "upload_bytes": 104857600,
      "download_bytes": 524288000
    },
    "rules": [
      {
        "id": "main",
        "name": "主线路",
        "listen": "0.0.0.0:25565",
        "backend": "127.0.0.1:25566",
        "enabled": true,
        "max_connections": 10000,
        "running": true,
        "metrics": {}
      }
    ]
  }
}
错误码

401:认证失败。

GET/api/v1/config

读取完整配置

返回管理监听地址、全局转发参数和规则列表。响应不包含管理令牌。

请求参数

无。

成功响应
{
  "ok": true,
  "data": {
    "admin": {"listen":"127.0.0.1:18080"},
    "settings": {
      "connect_timeout_ms": 5000,
      "shutdown_grace_secs": 30,
      "copy_buffer_bytes": 32768,
      "socket_buffer_bytes": 1048576,
      "listen_backlog": 4096,
      "tcp_nodelay": true,
      "reuse_port": false,
      "stats_interval_secs": 10
    },
    "rules": []
  }
}
错误码

401:认证失败。

PUT/api/v1/config

修改全局参数

替换全局转发参数,校验通过后重启受影响的启用规则并原子写入 TOML。现有连接在宽限期内优雅结束。

请求体参数
字段类型约束与说明
connect_timeout_ms整数大于 0,后端连接超时。
shutdown_grace_secs整数1 到 300。
copy_buffer_bytes整数4096 到 1048576。
socket_buffer_bytes整数0 到 16777216;0 使用系统默认。
listen_backlog整数1 到 65535。
tcp_nodelay布尔是否启用 TCP_NODELAY。
reuse_port布尔Linux 多实例共享端口时使用。
stats_interval_secs整数大于 0。
请求示例
{"connect_timeout_ms":5000,"shutdown_grace_secs":30,"copy_buffer_bytes":32768,"socket_buffer_bytes":1048576,"listen_backlog":4096,"tcp_nodelay":true,"reuse_port":false,"stats_interval_secs":10}
成功响应

200,data 为更新后的完整配置。

错误码

400:参数非法、端口绑定失败或配置无法持久化。401:认证失败。

GET/api/v1/rules

读取规则列表

返回已持久化的全部启用和停用规则。

请求参数

无。

成功响应
{"ok":true,"data":[{"id":"main","name":"主线路","listen":"0.0.0.0:25565","backend":"127.0.0.1:25566","enabled":true,"max_connections":10000}]}
错误码

401:认证失败。

POST/api/v1/rules

新建转发规则

新增规则。启用规则会立即绑定监听地址;成功后原子持久化。

请求体参数
字段类型约束与说明
id字符串1 到 32 位字母、数字、短横线或下划线,必须唯一。
name字符串1 到 64 个字符。
listenSocketAddr客户端监听地址,启用规则之间不能重复。
backendSocketAddr实际 Minecraft Java 服务端地址。
enabled布尔是否立即启动。
max_connections整数1 到 1000000。
请求示例
{"id":"backup","name":"备用线路","listen":"0.0.0.0:25567","backend":"10.0.0.3:25565","enabled":true,"max_connections":5000}
成功响应

201,data 为创建后的规则。

错误码

400:ID 重复、参数非法、监听冲突或持久化失败。401:认证失败。

PUT/api/v1/rules/{id}

修改或启停规则

完整替换指定规则。路径 ID 为权威值,请求体中的 ID 会被路径值覆盖。修改监听、后端或启用状态会在线应用。

路径参数
id规则唯一 ID。
请求体

与新建规则相同。

成功响应

200,data 为更新后的规则。

错误码

400:规则不存在、参数非法、端口绑定失败或持久化失败。401:认证失败。

DELETE/api/v1/rules/{id}

删除转发规则

优雅停止并删除指定规则。为避免空配置,系统必须至少保留一条规则;可保留一条停用规则。

路径参数
id规则唯一 ID。
成功响应
{"ok":true,"data":{"deleted":"backup"}}
错误码

400:规则不存在或删除后无任何规则。401:认证失败。

统一错误结构

{"ok":false,"error":{"code":400,"message":"具体错误说明"}}
状态码含义
400业务参数或运行时应用失败。
401Bearer 管理令牌无效或缺失。
404请求路径不存在。
413请求体超过 Axum 默认限制。
500未预期的服务端错误。
502Nginx 无法连接回环管理端。