使用阿里云函数计算反向代理OpenAI服务

本文的主要思路是使用阿里云函数计算服务来代理 OpenAI 的 API 地址,配合自己的域名即可在境内实现访问。

至于是不是永久免费,我不知道。但是每个人都有点免费额度,个人做技术探究应该是够用了。

  1. 需要一个阿里云账号, 没有账号的可自行注册( 点击此处注册 )
  2. 需要一个自己注册的域名, 没有的可以注册 ( 点击注册域名 )

登录地址:https://fcnext.console.aliyun.com/overview

这是整个过程中最重要的一步!

首先在函数计算管理的应用面板,找到创建应用。

选择 通过模板创建应用, 在搜索框输入 Nginx ,找到对应模板 立即创建

填写一些服务关键信息。 这里要注意一下几个点

  1. 选择 直接部署
  2. 区域选择可以访问OpenAI的区域,例如:日本、美国、新加坡等
  3. 函数名、角色等信息不要修改

  1. 函数及服务 面板中,找到刚创建的服务,点击进入 Nginx

  2. 选择函数代码,并进行编辑,仅修改 nginx.conf 即可, 代码全文如下:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    
    # nginx -c /code/nginx.conf -g 'daemon off;'
    
    events { worker_connections 1024; }
    http {
        server {
            error_log  /dev/stderr;
            access_log /dev/stdout;
    
            gzip on;
            gzip_min_length 1k;
            gzip_comp_level 2;
            gzip_types text/html text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/svg+xml;
            gzip_vary on;
            gzip_disable "MSIE [1-6]\.";
            include /etc/nginx/mime.types;
            add_header Access-Control-Allow-Origin *;
            proxy_set_header Host api.openai.com;
            proxy_http_version 1.1;
            proxy_set_header Host $host;
    
            listen 9000;
    
            location ~* ^\/v1\/((engines\/.+\/)?(?:chat\/completions|completions|edits|moderations|answers|embeddings))$ {
                proxy_pass https://api.openai.com;
                proxy_set_header Connection '';
                proxy_read_timeout 8m;
                proxy_ignore_headers Cache-Control;
                client_body_buffer_size 4m;
                proxy_ssl_server_name on;
                proxy_ssl_session_reuse off;
            }
    
            location /v1 {
                proxy_pass https://api.openai.com;
                proxy_ssl_server_name on;
                proxy_ssl_session_reuse off;
            }
    
        }
    }
    
  3. 别忘了部署代码

由于阿里云提供的默认公网访问地址是不能进行函数服务的,我们需要配置自己的域名。

通过函数计算面板,找到域名管理页面,并进入添加自定义域名

注意以下标出的几个重要信息

  1. 域名输入后,先去解析 CNAME,如果没有解析,最终是无法提交的。 这一步不会做,自己去搜索引擎学习
  2. 路由配置
    1. 路径如图使用 /*
    2. 服务名称: 即为刚才创建的服务
    3. 函数名: nginx
    4. 版本: LATEST
  3. 强烈建议配置HTTPS
    1. 如果你已经有了,可以上传。
    2. 如果没有,直接使用免费的HTTPS申请教程: 点击学习

详细的配置文档:https://help.aliyun.com/zh/fc/user-guide/configure-a-custom-domain-name

由于模板考虑到的是通用性,所以Nginx的资源申请的比较大。对于反向代理Open AI服务来说,就是大材小用、资源浪费了,我们还是能省则省。

  1. 从函数计算面板,找到服务及函数,找到Nginx服务,点击函数名进入

  2. 将Nginx调整为:0.1核, 128MB即可, 其他参数不要去修改

  3. 不要忘记保存

之前我也是使用Cloudflare Worker 反代 Open AI的API,今天突然用不成了。此文仅抛砖引玉,用于个人技术研究。