# qwen2api 修复指南
---
### 问题描述
部署 qwen2api 后,在 WebUI 中测试账号时提示:
> ❌ 上游 Qwen 请求被网络超时、连接中断或 WAF 风控拦截
**实际原因**:并非网络或风控问题,而是容器内的 `redsocks` 透明代理根本没有启动成功,导致所有上游请求无法发出,从而被误报为"超时/拦截"。
具体有两个 bug:
1. **路径写死**:`entrypoint.sh` 中硬编码了 `/usr/local/bin/redsocks`,但实际安装路径通常是 `/usr/sbin/redsocks`,导致找不到可执行文件。
2. **配置语法过时**:脚本生成的配置文件使用了旧版字段 `redirect_iptables`,而当前 Debian/Ubuntu 系统的 redsocks 只识别 `redirector = iptables`,导致配置加载失败。
---
### 修复步骤
#### 修改 `qwen2api/entrypoint.sh`
**修复一:动态获取 redsocks 路径**
找到启动 redsocks 的代码,将:
```bash
/usr/local/bin/redsocks -c /tmp/redsocks.conf &
替换为:
REDSOCKS_BIN="$(command -v redsocks)"
if [ -z "$REDSOCKS_BIN" ]; then
echo "ERROR: redsocks not found in PATH"
exit 1
fi
"$REDSOCKS_BIN" -c /tmp/redsocks.conf &
修复二:更新 redsocks 配置语法
找到生成 /tmp/redsocks.conf 的代码,将 base { } 部分替换为:
base {
log_debug = off;
log_info = on;
log = "stderr";
daemon = off;
redirector = iptables;
}
关键改动:
- 删除
redirect_iptables = off 和 redirect_ip6tables = off
- 新增
redirector = iptables
- 新增
log = "stderr" 方便排查
daemon = off(容器内不需要后台运行)
验证方法
# 1. 重新构建镜像
docker compose build qwen2api
# 2. 重启容器
docker compose up -d
# 3. 查看日志,确认 redsocks 正常启动
docker compose logs qwen2api
成功标志:日志中出现以下内容即表示修复成功:
redsocks running
iptables transparent proxy rules applied.
上游请求完成 status=200
此时再回到 WebUI 测试账号,应显示"创建上游会话成功",不再出现超时或风控拦截提示。
替换为:
修复二:更新 redsocks 配置语法
找到生成
/tmp/redsocks.conf的代码,将base { }部分替换为:base { log_debug = off; log_info = on; log = "stderr"; daemon = off; redirector = iptables; }关键改动:
redirect_iptables = off和redirect_ip6tables = offredirector = iptableslog = "stderr"方便排查daemon = off(容器内不需要后台运行)验证方法
成功标志:日志中出现以下内容即表示修复成功:
此时再回到 WebUI 测试账号,应显示"创建上游会话成功",不再出现超时或风控拦截提示。