在本教程中,欧博注册我们将介绍如何使用Nginx反向代理访问OpenAI API,并提供相应的测试方法。主要目标是保证Server-sent events (SSE)类型响应的流畅输出,从而提供良好的用户体验。 步骤1:安装最新版Nginx首先,欧博代理我们需要安装最新版的Nginx。在Ubuntu上,可以使用以下命令安装: echo "deb `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系统,请按照以下步骤操作: 使用文本编辑器打开 /etc/apt/sources.list 并在底部添加以下内容: deb stretch nginx导入软件源的签名密钥,欧博官网并将其添加到apt: sudo wget sudo apt-key add nginx_signing.key安装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; } }listen 443 ssl http2; 和 listen [::]:443 ssl http2;:监听IPv4和IPv6的443端口,欧博娱乐启用SSL和HTTP/2。 server_name example.com;:指定服务器名称,将其更改为您的实际域名。 ssl_certificate 和 ssl_certificate_key:分别指定SSL证书和私钥的路径。 ssl_ciphers 和 ssl_protocols:定义支持的加密套件和SSL/TLS协议。 ssl_prefer_server_ciphers on;:表示服务器优先选择的加密套件。 ssl_session_cache 和 ssl_session_timeout:配置SSL会话缓存和超时时间。 add_header Strict-Transport-Security "max-age=31536000";:添加HSTS头,要求浏览器在给定的时间内(这里是1年)只使用HTTPS访问服务器。 charset utf-8;:设置字符集为UTF-8。 location / {...}:定义一个location块,欧博allbet用于处理根路径的请求。 proxy_pass https://api.openai.com;:将请求代理到OpenAI API。 proxy_ssl_name 和 proxy_ssl_server_name on;:设置与后端服务器建立SSL连接的相关参数。 proxy_set_header:设置传递给后端服务器的请求头。 chunked_transfer_encoding off;:禁用分块传输编码,以确保SSE消息不会被切割。 proxy_set_header X-Real-IP [your_us_server_ip];:设置实际客户端IP地址,将[your_us_server_ip]替换为您的美国服务器IP地址。 proxy_buffering off; 和 proxy_cache off;:禁用缓冲和缓存,以确保实时消息能够及时传递给客户端。 proxy_redirect off;:禁用代理重定向,确保服务器响应不会因重定向而更改。 location /v2 {...}:定义另一个location块,用于处理以/v2开头的请求。 return 404;:针对这些请求,直接返回404状态码表示未找到资源。 在本Nginx配置中,重点是确保对OpenAI API的请求能够流畅地通过反向代理。这包括正确地转发请求,处理响应以及针对SSE的特殊处理(使用stream参数请求API时流程稳定的打字机效果,相关博文:《对接ChatGPT3.5/4的API实现打字机效果》)。 请将配置中的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:测试反向代理接下来,您可以使用以下方法测试反向代理: 首先设置环境变量: export OPENAI_API_KEY=sk-xxxxx export OPENAI_API_ORG=org-xxxx测试模型列表: curl https://example.com/v1/models \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "OpenAI-Organization: $OPENAI_API_ORG"测试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)类型响应的流畅输出,从而提供良好的用户体验。 (责任编辑:) |