私有化部署网络与权限配置
本文说明私有化部署时如何按官方文档核对模型 API 的端口、WireGuard 密钥、Nginx 转发,以及 OAuth2 Proxy `/auth` 仅返回 202 或 401 的访问判据。
完成这套私有化部署网络与权限配置后,你会得到一条可核对的模型 API 访问路径:客户端先进入私网接口,由 Nginx 转发上游,再由 OAuth2 Proxy 检查登录身份。开始前需要目标主机、Nginx 可访问的模型 API 地址、每个客户端对应的 WireGuard 密钥,以及已经确认的 OAuth2 Proxy 认证参数;认证密钥只放入启动进程可读取的本机环境变量,WireGuard 私钥仅留在受控主机,具体监听端口和参数名按当前官方文档核对。
私有化部署准备条件
先列一张本机配置清单:模型 API 的监听地址与端口、Nginx 对外入口和上游地址、客户端可使用的私网地址,以及认证失败时的处理方式。不要把示例端口当成产品默认值,也不要从反向代理配置反推模型服务端口。
将模型 API 放在 Nginx 后方作为内部上游,对外只保留受控入口;私网客户端先通过身份校验,再访问代理入口。准备密钥时,同时记录公钥与计划分配的私网地址,确认它们只进入对应节点。认证参数不要贴进聊天、工单或版本库;启动脚本使用环境变量前,先核对当前配置文档中的变量名。
操作步骤
1. 生成 WireGuard 密钥
在受控主机生成密钥:
wg genkey | tee privatekey | wg pubkey > publickey
这条命令生成 privatekey,再由它得到 publickey,与 WireGuard 快速入门文档 中的命令一致。
按 WireGuard 官网说明,WireGuard 以 UDP 封装 IP 包,接口使用本端私钥和对端公钥;密钥分发和推送配置不在其范围内,AllowedIPs 则由 Cryptokey Routing 将公钥关联到允许的隧道地址。不要把“已经生成密钥”当成“访问关系已经配好”,还要逐项核对地址映射。
2. 按实际监听端口设置入站规则
先从当前模型运行版本确认监听地址和 TCP 端口,再决定防火墙规则。ufw 手册展示的端口命令形式如下:
ufw allow 25/tcp
根据 ufw 手册,该命令放行一个 TCP 端口;未指定方向时,规则作用于入站流量。25 在这里仅展示命令形式,不代表模型 API 端口;只有实际服务使用该端口时才可照用,否则应按当前服务文档填写。
3. 配置 Nginx 即时代理行为
对于需要边接收边转发的流式入口,把以下指令放入与该入口匹配的 Nginx 配置上下文:
proxy_buffering off;
proxy_read_timeout 60s;
按 Nginx 的 ngx_http_proxy_module 文档,proxy_buffering 默认开启,关闭后会在收到响应时同步传给客户端;proxy_read_timeout 默认是 60s,计时对象是两次连续读取之间的间隔,不是整个响应的传输时间。这段配置不定义模型 API 地址,上游地址仍以当前服务文档为准。
4. 接入 OAuth2 Proxy 登录校验
把 Nginx 的 auth_request 指向 /auth,并在 OAuth2 Proxy 启动参数中加入集成要求的标志:
/auth
--reverse-proxy
根据 OAuth2 Proxy 的 Nginx 集成文档,auth_request 会调用 /auth,该入口只返回 202 Accepted 或 401 Unauthorized,不会把原请求继续代理到后端;这种集成必须设置 --reverse-proxy。
按 OAuth2 Proxy 配置概览,配置优先级依次是命令行参数、环境变量和配置文件。因此,认证密钥应保存在环境变量中,并检查命令行没有用同名设置覆盖它;本文不猜测具体变量名,启动前应从当前官方配置页确认。
怎么确认成功
从已获准的私网客户端向 Nginx 配置的认证检查路径 /auth 发起请求。按前述官方定义,返回 202 Accepted 或 401 Unauthorized 都说明请求到达了认证检查,但它们都不是模型 API 的业务响应。
随后按当前模型服务文档请求真实 API 入口,正确结果应是该入口明确记录的响应。如果使用流式输出,还要确认客户端是否按 Nginx 文档所述在收到响应时立即接收;这只用于检查转发行为,不代表性能结论。本文引用的网络文档没有规定统一的模型 API 路径或端口,不要猜测 curl 地址,也不要把 /auth 成功当成模型调用成功。
常见出错点
AllowedIPs 与计划地址不一致时怎么处理?
回到密钥与地址映射步骤,逐个核对公钥和 AllowedIPs。密钥分发与推送配置不在 WireGuard 的范围内,因此不要假设新节点会自动取得完整配置,应按内部密钥管理流程分发并复核。
流式输出被攒批时先查什么?
先确认 proxy_buffering off 位于正确的 Nginx 配置上下文,再检查上游两次输出之间的间隔。proxy_read_timeout 控制连续读取之间的等待时间,不控制整个响应时长,单纯延长它不是解决缓冲问题的第一步。
/auth 持续返回 401 时先查什么?
确认启动参数包含 --reverse-proxy,再按命令行、环境变量、配置文件的顺序检查实际生效值。/auth 不负责代理模型请求,认证通过后仍需访问单独配置的上游入口。
开了端口仍无法访问时先查什么?
把当前服务文档中的监听地址和端口与实际入站规则逐项对照。25/tcp 只是手册中的命令示例,不能当作大模型 API 的通用端口。
以上步骤依据正文链接的官方文档整理,未在本站机器上运行;执行前请按当前版本复核。
资料来源
- WireGuard 官网
- WireGuard 快速入门文档
- ufw 手册
- [Nginx ngx_http_proxy_module 文档](https://nginx.org/en/docs/http/ng