使用 Docker 和 Nginx 反向代理访问 ChatGPT API

在许多应用程序中,我们需要从一个外部服务中获取数据。然而,由于种种原因(例如跨域问题、API 访问限制等),我们可能无法直接从客户端访问这些服务。这时,反向代理可以成为我们的救星。在这篇文章中,我们将介绍如何使用 Docker 和 Nginx 反向代理访问 OpenAI API 接口。

如果您需要查看完整的配置文件,请转到Github项目openai-proxy

1、准备工作

在开始之前,我们需要准备一些东西:

  • Docker:这是一个用于容器化应用程序的开源平台。

2、准备Nginx配置文件

完整的配置文件见nginx.conf,其核心部分如下:

server {
    listen 80;  # 监听80端口,用于HTTP请求
    location / {
        proxy_pass  https://api.openai.com/;  # 反向代理到https://api.openai.com/这个地址
        proxy_ssl_server_name on;  # 开启代理SSL服务器名称验证,确保SSL连接的安全性
        proxy_set_header Host api.openai.com;  # 设置代理请求头中的Host字段为api.openai.com
        ······
    }
}

3、启动服务

3.1、docker run

docker run -itd -p 80:80 -v $PWD/nginx.conf:/etc/nginx/nginx.conf --name my-nginx nginx

3.2、docker compose up

docker compose up -d

4、应用

# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai
openai.api_key = api_key
openai.api_base = "your_proxy_url" # 代理地址,入“http://www.test.com/v1”
openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"},
        {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
        {"role": "user", "content": "Where was it played?"}
    ]
)

如果对您有帮助,请不要忘记点个赞哦!👍

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 使用 Nginx 反向代理的步骤如下: 1. 首先,你需要创建一个 Dockerfile 文件来定义你的 Nginx 容器。在 Dockerfile 中,你可以指定基础镜像、安装 Nginx,以及配置反向代理。 以下是一个简单的示例 Dockerfile: ```Dockerfile FROM nginx # 删除默认的 Nginx 配置文件 RUN rm /etc/nginx/conf.d/default.conf # 添加你的自定义 Nginx 配置文件 COPY nginx.conf /etc/nginx/conf.d/ # 暴露 Nginx 监听的端口号 EXPOSE 80 ``` 2. 创建一个名为 `nginx.conf` 的文件,用来配置 Nginx反向代理规则。根据你的需求,你可以根据自己的实际情况进行配置,下面是一个简单的示例: ```nginx server { listen 80; server_name your_domain.com; location / { proxy_pass http://your_upstream_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 将 `your_domain.com` 替换为你要将流量转发到的域名,将 `your_upstream_server` 替换为将接收到的请求转发到的上游服务器地址。 3. 构建 Docker 镜像。在终端中导航到 Dockerfile 所在的目录,并运行以下命令构建镜像: ```bash docker build -t your_image_name . ``` 将 `your_image_name` 替换为你想要的镜像名称。 4. 运行 Docker 容器使用以下命令运行刚刚构建的镜像: ```bash docker run -d -p 80:80 your_image_name ``` 这将在后台运行一个新的容器,并将主机的 80 端口映射到容器的 80 端口。 现在,你的 Nginx 反向代理容器已经启动并运行。你可以通过访问主机的 IP 地址或域名来验证反向代理是否正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值