轶哥

📚 Having fun with AI Agent. Always learning.

Nginx反向代理OpenAI API
  •   更新:2023-06-05 10:16:11
  •   首发:2023-04-30 11:59:48
  •   教程
  •   4298

在本教程中,我们将介绍如何使用Nginx反向代理访问OpenAI API,并提供相应的测试方法。主要目标是保证Server-sent events (SSE)类型响应的流畅输出,从而提供良好的用户体验。

步骤1:安装最新版Nginx

首先,我们需要安装最新版的Nginx。在Ubuntu上,可以使用以下命令安装:

echo "deb http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list
curl -o /tmp/nginx_signing.key https://nginx.org/keys/nginx_signing.key
sudo mv /tmp/nginx_signing.key /etc/apt/trusted.gpg.d/nginx_signing.asc
sudo apt update
sudo apt install nginx

对于使用的Debian系统,请按照以下步骤操作:

  1. 使用文本编辑器打开 /etc/apt/sources.list 并在底部添加以下内容:

    deb http://nginx.org/packages/mainline/debian/ stretch nginx
    
  2. 导入软件源的签名密钥,并将其添加到apt:

    sudo wget http://nginx.org/keys/nginx_signing.key
    sudo apt-key add nginx_signing.key
    
  3. 安装Nginx:

    sudo apt update
    sudo apt install nginx
    

在安装完成后,可以使用以下命令启动并设置Nginx服务为开机自启:

sudo systemctl enable nginx --now

步骤2:配置Nginx

接下来,我们配置Nginx来反向代理OpenAI API。在Nginx的配置文件(/etc/nginx/conf.d/openai.conf)中添加以下内容:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com;
    ssl_certificate /home/azureuser/.acme.sh/example.com_ecc/fullchain.cer;
    ssl_certificate_key /home/azureuser/.acme.sh/example.com_ecc/example.com.key;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    charset utf-8;

    location / {
        proxy_pass https://api.openai.com;
        proxy_ssl_name api.openai.com;
        proxy_ssl_server_name on;
        proxy_set_header Host api.openai.com;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        chunked_transfer_encoding off;
        proxy_set_header X-Real-IP [your_us_server_ip];
        proxy_read_timeout 3600;
        proxy_buffering off;
        proxy_cache off;
        proxy_redirect off;
        proxy_hide_header Cache-Control;
    }

    location /v2 {
        return 404;
    }
}

请将配置中的example.com替换为您实际使用的域名,并将[your_us_server_ip]替换为您的美国服务器IP地址。如果使用Azure OpenAI接口,只需要替换api.openai.com为你的Azure OpenAI Endpoint的Host。

nginx.conf中,添加以下配置:

client_max_body_size 1000M;
client_body_buffer_size 1024M;
keepalive_timeout 3600;

解释:

  • client_max_body_size 设置允许客户端请求的最大单个文件体积。
  • client_body_buffer_size 设置客户端请求体缓冲区大小。
  • keepalive_timeout 设置长连接超时时间。

步骤3:测试反向代理

接下来,您可以使用以下方法测试反向代理:

  1. 首先设置环境变量:

    export OPENAI_API_KEY=sk-xxxxx
    export OPENAI_API_ORG=org-xxxx
    
  2. 测试模型列表:

    curl https://example.com/v1/models \
      -H "Authorization: Bearer $OPENAI_API_KEY" \
      -H "OpenAI-Organization: $OPENAI_API_ORG"
    
  3. 测试ChatGPT生成文本:

    curl https://example.com/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $OPENAI_API_KEY" \
      -d '{
        "model": "gpt-4",
        "messages": [{"role": "user", "content": "Hello!"}]
      }'
    

通过以上方法,您可以测试和验证Nginx反向代理配置是否正确。本教程向您展示了如何使用Nginx反向代理访问OpenAI API,并提供了相应的测试方法。主要目标是保证Server-sent events (SSE)类型响应的流畅输出,从而提供良好的用户体验。

打赏
交流区

暂无内容

尚未登陆
发布
  上一篇 (CDN加载失败自动切换为加载本地静态资源)
下一篇 (解决 push 到 GitHub 异常 - 无法连接22端口)  

评论回复提醒