• openai的跨域转发教程


    openai的跨域转发教程

    前言

    这个帖子主要是记录一下操作步骤,要不然时间久了我根本记不住,又得重新问gpt。
    主要是有些主机的IP无法直接访问openai,或者其他模型的api,官方默认的url被他们禁的死死的,所以需要一个中转的IP。
    为此,我特意整了一个便宜的中转服务器。
    以openai的base_url为例:https://api.openai.com/v1/chat/completions
    好了,我们现在有一个能访问openai的中转服务器A,公网IP为122.122.122.122,有一个本地服务器B,还需要一个域名,假设是abc.com。

    这时候要配置的步骤还是比较复杂的,一条一条的梳理。

    1.中转服务器的配置:

    1. 开启对外端口,假设是2222;
      这个需要在你的服务器管理后台设定,tcp的端口,至于防火墙啥的,我不太记得了。
    2. 域名的转发。
      你需要将自己的域名abc.com的请求,转接到api.openai.com中,并且还要处理跨域的问题。
      假设你的域名托管在cloudflare中,这时候需要你在DNS中,设定一个A标签,假设是openai,然后IP地址设置为中转服务器的公网IP,122.122.122.122。 Proxy status不选择。至于有没有风险我还不太清楚,主要是这条路我走通了。
    3. Caddy反代
      第二步已经将openai.abc.com的请求配置到了IP122.122.122.122的IP了。现在需要将本地的端口对接到这个这个域名。我们可以选择免费的caddy反代,可以自动配置免费的ssl证书,非常舒服。
      操作步骤也有几步:
    4. 创建caddy文件夹。并且进入目录。
    5. vim docker-compose.yml
      填入:
    services:
      caddy:
        image: caddy:alpine
        container_name: caddy
        ports:
          - 80:80
          - 443:443
        volumes:
          - ./Caddyfile:/etc/caddy/Caddyfile
          - ./data:/data/caddy
        user: "1000"
        restart: always
        environment:
          TZ: Asia/Shanghai
    networks:
      default:
        external: true
        name: net
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    1. 创建docker的桥接网络:docker network create net

    2. vim Caddyfile
      填入:

    openai.abc.com {
      encode gzip
      reverse_proxy 122.122.122.122:2222
    }
    
    • 1
    • 2
    • 3
    • 4
    1. 启动caddy的docker:docker compose up --force-recreate --build -d

    配置转发

    接下来要配置具体的跨域转发。

    1. 安装Node.js
      确保你的开发环境中已经安装了Node.js。如果还没有安装,你可以从Node.js官网下载并安装它。我系统是Ubuntu22.04.3,node.js安装的是v12.22.9。

    2. 创建项目目录:
      mkdir proxy-server
      cd proxy-server

    3. 初始化Node.js项目
      在项目目录中,运行以下命令来初始化一个新的Node.js项目并创建package.json文件:
      npm init -y

    4. 安装依赖
      你需要安装express和http-proxy-middleware。使用以下命令安装这些依赖。
      npm install express http-proxy-middleware

    5. 创建server.js文件
      打开server.js文件并添加以下代码:

    const express = require('express');
    const { createProxyMiddleware } = require('http-proxy-middleware');
    
    // 创建Express应用
    const app = express();
    
    // 定义代理中间件选项
    const proxyOptions = {
      target: 'https://api.openai.com', // 目标主机
      changeOrigin: true, // 需要虚拟主机站点
    };
    
    // 使用中间件将特定请求转发到目标API
    app.use('/api', createProxyMiddleware(proxyOptions));
    
    // 设置端口
    const PORT = process.env.PORT || 2222;
    
    // 启动服务器
    app.listen(PORT, () => {
      console.log(`Server is running on port ${PORT}`);
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    1. 运行服务
      使用以下命令启动你的服务:
      node server.js
      如果是在后台启动的话,可以用:
      nohup node server.js >> output.log 2>&1 &

    调用:

    这时候只需要将openai的base_url(https://api.openai.com/v1/chat/completions)替换成你的url就行了:

    # openai.base_url = 'https://api.openai.com/v1/chat/completions'
    openai.base_url = 'https://openai.abc.com/v1/chat/completions'
    
    • 1
    • 2

    完美,也许帮不到大家,但我自己做了一个比较完整的记录。

  • 相关阅读:
    大企业与小企业在信息安全体系建设中的区别
    Sigma 规则如何帮助解决网络安全技能短缺问题
    第20章 原子操作实验(iTOP-RK3568开发板驱动开发指南 )
    uniapp开发h5引入第三方js(sdk)
    1 HTML and CSS
    【LeetCode】合并石头的最低成本 [H](动态规划)
    人生碎碎念(非技术性文章,可不看)
    MAC版Lightroom Classic 2022(Lrc2022)v11.5已发布,支持M1/M2和Intel三种系统,解决无法成功安装等问题
    系统架构设计师(第二版)学习笔记----计算机网络
    Windows 11 中打印时提示打印机不兼容,都来是“+”惹的祸
  • 原文地址:https://blog.csdn.net/hehedadaq/article/details/137409776