大模型Nginx代理配置:从零搭建API反向代理与密钥保护

如果你手头有多个大模型API,直接在前端或客户端调用会暴露密钥,而且难以统一管理。
用Nginx做反向代理,可以把密钥藏在服务器端,对外只暴露一个代理地址,同时还能做限流、日志和负载均衡。
下面按零基础能跟做的顺序,讲清楚配置和验证方法。

先确认你的环境和前置条件

开始之前,需要一台能运行Nginx的Linux服务器(本文以Ubuntu 22.04为例,其他发行版命令略有差异),并确保服务器能访问外网。
大模型API以OpenAI兼容接口为例,假设你已经有API Key和对应的接口地址(如https://api.openai.com/v1)。

服务器上安装Nginx:

sudo apt update
sudo apt install nginx -y
sudo systemctl status nginx

如果状态显示active (running),说明Nginx已就绪。
下面确认服务器能访问目标API:

curl -I https://api.openai.com/v1/models

返回HTTP状态码(如401或200)都表示网络连通,401是因为没带密钥,属于正常现象。

配置Nginx反向代理大模型API

Nginx的配置文件通常位于/etc/nginx/sites-available/下。
新建一个配置文件,例如llm-proxy.conf:

server {
    listen 80;
    server_name your-domain.com;  # 换成你的域名或IP

    location /v1/ {
        proxy_pass https://api.openai.com/v1/;
        proxy_ssl_server_name on;
        proxy_set_header Host api.openai.com;
        proxy_set_header Authorization "Bearer sk-你的实际API密钥";
        proxy_set_header Content-Type $content_type;
        proxy_set_header Accept $http_accept;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering off;
        proxy_read_timeout 300s;
    }
}

关键点说明:

  • proxy_pass末尾的/v1/和location的/v1/配合,确保路径正确转发。
  • proxy_set_header Authorization把密钥写死在Nginx里,客户端就不需要携带密钥。
  • proxy_buffering off对大模型流式响应很重要,否则可能卡住不输出。
  • proxy_read_timeout适当调大,避免长回答超时。

保存后创建软链接并测试配置:

sudo ln -s /etc/nginx/sites-available/llm-proxy.conf /etc/nginx/sites-enabled/
sudo nginx -t

如果输出syntax is ok和test is successful,重载Nginx:

sudo systemctl reload nginx

避坑:密钥安全与访问控制

把密钥写在Nginx配置里虽然方便,但要注意文件权限。
建议将配置文件权限设为640,属主为root:

sudo chmod 640 /etc/nginx/sites-available/llm-proxy.conf
sudo chown root:root /etc/nginx/sites-available/llm-proxy.conf

另外,代理接口不要直接对公网开放。
可以在Nginx层加一个简单的访问令牌,或者用防火墙限制来源IP。
例如只允许公司出口IP访问:

location /v1/ {
    allow 203.0.113.0/24;  # 替换为你的IP段
    deny all;
    # 其余代理配置...
}

如果使用宝塔面板,可以在“网站”->“设置”->“配置文件”中直接编辑,但同样要注意权限和备份。

验证代理是否生效

用curl通过你的代理地址请求模型列表:

curl http://your-domain.com/v1/models

如果返回JSON格式的模型列表(包含data数组),说明代理成功。
如果返回401,检查Nginx配置中的Authorization头是否正确携带了密钥;
如果返回502,检查proxy_pass地址和服务器网络;
如果返回404,检查location路径和proxy_pass的斜杠匹配。

对于流式对话,可以用:

curl http://your-domain.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"你好"}],"stream":true}'

观察是否逐块返回数据。
如果一次性返回全部内容,说明proxy_buffering可能没关闭,检查配置并重载。

常见问题排查

代理后响应很慢或超时:先确认proxy_read_timeout是否足够大(建议300s以上),并检查服务器到API的网络延迟。
可以在Nginx配置中增加proxy_connect_timeout 60s;。

流式输出被缓冲:除了proxy_buffering off,还需要确保没有启用gzip压缩代理响应,可以在location中加gzip off;。

HTTPS证书问题:如果代理目标是https,proxy_ssl_server_name on必须开启,否则可能握手失败。
如果服务器时间不准,也会导致SSL错误,用date命令检查时间。

如何代理多个大模型:可以配置多个location,每个指向不同上游,或者用Nginx的upstream模块做负载均衡。
例如:

upstream llm_backend {
    server api.openai.com:443;
    # 可以加更多备用地址
}

然后在location中使用proxy_pass https://llm_backend/v1/;。

完成以上步骤后,你的客户端只需要请求http://your-domain.com/v1/...,无需接触真实密钥。
建议定期检查Nginx错误日志/var/log/nginx/error.log,以便及时发现代理异常。
如果后续需要更细粒度的密钥管理或用量统计,可以考虑在Nginx前再架设一个API网关,但基础的代理配置已经能满足大多数个人和小团队的需求。

分享到:
上一篇
大模型反向代理配置:Nginx 转发 API 请求的完整步骤
下一篇
大模型HTTPS证书配置:Nginx反向代理实操指南
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意