轶哥

📚 Having fun with AI Agent. Always learning.

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

    在本教程中,我们将介绍如何使用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端口)  

    评论回复提醒