ComfyUI-Queue-IP-Guard
Managing permissions for canceling tasks in the queue when multiple users share the same ComfyUI instance
ComfyUI-Queue-IP-Guard
只允许白名单 IP 取消正在执行的任务,或删除 / 清空任务队列。查询队列不受影响。
安装
将本目录放在 custom_nodes/ComfyUI-Queue-IP-Guard/,重启一次 ComfyUI。中间件在启动时挂载;之后修改 config.json 会在下一次受保护请求时生效,无需再重启。
配置
config.json:
| 字段 | 默认值 | 含义 |
| --- | --- | --- |
| allowed_ips | ["127.0.0.1", "::1"] | 允许执行受保护操作的客户端 IP,字符串精确匹配 |
| block_interrupt | true | 拦截取消正在执行的任务 |
| block_queue_delete | true | 拦截删除或清空等待队列 |
对应请求:
block_interrupt:POST /interrupt、POST /api/interrupt,以及会打断正在执行任务的POST /api/jobs/{job_id}/cancel、POST /api/jobs/cancelblock_queue_delete:请求体含clear或delete的POST /queue、POST /api/queue,以及会删掉等待任务的上述两个 jobs 接口
POST /api/interrupt 与 POST /interrupt 使用同一套规则,POST /api/queue 与 POST /queue 使用同一套规则。这是给会自动加上 /api 前缀的前端准备的,白名单、开关和拒绝内容不变。
GET /queue、POST /prompt,以及不含 clear / delete 的 POST /queue 和 POST /api/queue 会原样放行。已经结束、不在队列里的任务,取消请求也会放行。
客户端 IP
优先取请求头 X-Forwarded-For 的第一段,否则使用连接对端 request.remote。
经 Nginx 等反代访问时,请由代理覆盖该头,不要沿用客户端自己传来的值,否则调用方可以伪造白名单 IP:
proxy_set_header X-Forwarded-For $remote_addr;
拒绝时
终端会打印带来源 IP 的警告。前端取消或清理队列被拒绝时,只弹出「您不能取消任务」,不会再弹出「已确认:待处理任务已删除」。同时返回 HTTP 403:
{"error": "您不能取消任务", "code": "queue_ip_guard"}
每次拦截成功会追加一行到插件目录下的 blocked.log,包含时间、判定 IP、连接对端、X-Forwarded-For、请求方法和路径。该文件由运行时生成,已写入 .gitignore。