电脑基础 · 2023年4月19日

使用Nginx反向代理OpenAI API

由于OpenAI的API在国内无法访问,所以可以通过海外服务器利用Nginx实现反向代理。

安装Nginx

这一步就不赘述了,不同的Linux系统安装方式略有不同,根据自己的服务器的系统自行百度即可。

OpenSSL创建证书

因为OpenAI的接口是https协议的,所以在这之前需要提供SSL证书,这里使用OpenSSL来创建免费的SSL证书。

OpenSSL一般默认都有安装,所以直接使用即可,如果服务器没有该命令同样自行百度安装。

第一步:创建私钥

openssl genrsa -out private.key 2048

在合适的文件夹处输入该命令,它将生成名为private.key的RSA密钥文件,至少使用2048位的密钥长度。

第二步:创建CSR文件

openssl req -new -key private.key -out server.csr

这里会询问详细信息,如国家代码、州和地区名称、组织名称、您的姓名、电子邮件地址等,可以参考下面的输入:

CountryName: CN
ProvinceName: Guangdong
Locality Name: Guangzhou
Organization Name: ABC
Organizational Unti Name: ABC
Common Name:填自己的域名或者服务器ip地址
Email Adress: 123@163.com
A Challenge password: 因为是可选的所以直接回车即可
An optional company name: 同样是可选的所以直接回车即可

第三步:创建自签名证书

openssl x509 -req -days 3650 -in server.csr -signkey private.key -out server.crt

使用private.key和server.csr生成新证书server.crt,这里我指定有效时间为3650天,也就是10年。

配置Nginx

sudo vim /etc/nginx/nginx.conf

在http节点下添加server节点,配置如下:

http {
    #此处省略其他配置
    server {
            listen 443 ssl http2;
            server_name 域名或者服务器ip;
            ssl_certificate      /root/cert/server.crt;
            ssl_certificate_key  /root/cert/private.key;
            location /v1/ {
                      proxy_pass https://api.openai.com;
                      proxy_set_header Host api.openai.com;
                      proxy_set_header X-Real-IP $remote_addr;
            }
    }
}

ssl_certificate和ssl_certificate_key分别是上面生成的两个文件。

重启Nginx

停止Nginx

sudo nginx -s stop

启动Nginx

sudo nginx

大功告成!

自此便可以通过自己的域名或者服务器ip实现OpenAI API的访问了。

https://服务器域名或者ip/v1/chat/completions