这是一个简单的 HTTP 代理项目,解决部分场景下因网络原因无法使用个别 AI 服务的问题,需要搭建在可以正常访问的服务器上,使用 Go 语言和 Echo 框架构建。
Find a file
liyp 6f7bc273e1
Some checks failed
Docker Image CI / build-and-push (push) Has been cancelled
Release Binary / goreleaser (push) Has been cancelled
feat: migrate dashboard charts from Chart.js to ApexCharts, enhance UI with new visualization, and include initial stats data.
2026-01-31 11:57:55 +08:00
.github/workflows ci(docker): 更新 Docker 镜像发布流程并完善文档 2025-06-07 16:08:33 +08:00
api feat(assets): 添加嵌入式静态资源支持,提供只读文件系统用于静态文件服务 2025-12-02 17:03:55 +08:00
data refactor(proxy): 优化路径处理逻辑并简化代码 2025-05-17 22:03:08 +08:00
images ci(docker): 更新 Docker 镜像发布流程并完善文档 2025-06-07 16:08:33 +08:00
internal feat(stats): 添加每日请求次数和服务调用分布统计功能,优化前端展示 2025-12-02 19:17:12 +08:00
pkg feat(assets): 添加嵌入式静态资源支持,提供只读文件系统用于静态文件服务 2025-12-02 17:03:55 +08:00
public feat: migrate dashboard charts from Chart.js to ApexCharts, enhance UI with new visualization, and include initial stats data. 2026-01-31 11:57:55 +08:00
.dockerignore feat(db): 实现数据库批量操作并优化性能 2025-06-02 17:29:47 +08:00
.gitignore feat(assets): 添加嵌入式静态资源支持,提供只读文件系统用于静态文件服务 2025-12-02 17:03:55 +08:00
.goreleaser.yaml chore: 更新.gitignore文件,添加GitHub Actions发布配置和GoReleaser配置,优化前端脚本 2025-05-17 19:03:59 +08:00
docker-compose.yaml 添加docker支持 2025-04-25 16:50:26 +08:00
Dockerfile feat(assets): 添加嵌入式静态资源支持,提供只读文件系统用于静态文件服务 2025-12-02 17:03:55 +08:00
go.mod 测试路由 2025-04-25 22:45:07 +08:00
go.sum 添加代理 2025-04-25 16:32:43 +08:00
LICENSE 添加代理 2025-04-25 16:32:43 +08:00
main.go feat(assets): 添加嵌入式静态资源支持,提供只读文件系统用于静态文件服务 2025-12-02 17:03:55 +08:00
README.md ci(docker): 更新 Docker 镜像发布流程并完善文档 2025-06-07 16:08:33 +08:00
vercel.json feat(stats): 计算有效代理的平均响应时间并优化统计处理逻辑 2025-06-07 11:53:16 +08:00

Go Proxy - AI 服务代理工具

一个轻量级的 HTTP 代理服务器,专为解决 AI 服务访问问题设计。支持多路由代理、请求统计和美观的数据可视化界面。

Docker Image CI

核心特性

  • 🚀 多路由代理: 通过 YAML/JSON 配置多个代理规则
  • 📊 数据统计: 实时监控请求次数、响应时间等指标
  • 💰 成本追踪: 统计 API 调用成本
  • 🎨 现代界面: 响应式设计 + 暗色模式
  • 🔄 余额查询: 支持硅基流动 API 余额查询
  • 🐳 容器支持: 提供 Docker 镜像,支持 Docker Compose 部署

界面预览

主界面

主界面-亮色模式 主界面-暗色模式

API 余额查询界面

余额查询界面

快速开始

Docker 运行

# 拉取镜像
docker pull xmengnet/go-proxy

# 运行容器
docker run -d \
  -p 8080:8080 \
  -v $PWD/data:/app/data \
  --name go-proxy \
  xmengnet/go-proxy
  
 # 注意需要 data 目录下有配置文件

源码运行

# 克隆项目
git clone https://github.com/xmengnet/go-proxy.git
cd go-proxy

# 安装依赖
go mod tidy

# 运行
go run main.go

配置说明

创建 data/config.yaml 文件:

server:
  port: "8080"  # 服务器端口
proxies:
  - path: "/gemini"  # 匹配路径
    target: "https://generativelanguage.googleapis.com"  # 目标地址
    vendor: "google"        # 厂商标识
  - path: "/anthropic"
    target: "https://api.anthropic.com"
    vendor: "anthropic"     

构建与运行

  1. 克隆项目:

    git clone https://github.com/xmengnet/go-proxy.git
    cd go-proxy
    
  2. 安装依赖:

    go mod tidy
    
  3. 配置: 编辑 data/config.yaml 文件,配置代理规则。示例配置如下:

    server:
      port: 8070
    
    proxies:
      - path: "/gemini"         # 代理路径
        target: "https://generativelanguage.googleapis.com"  # 目标地址
        vendor: "google"        # 厂商标识
    
      - path: "/anthropic"
        target: "https://api.anthropic.com"
        vendor: "anthropic"
    

容器镜像

  • GitHub Container Registry: ghcr.io/xmengnet/go-proxy
  • Docker Hub: xmengnet/go-proxy

支持的标签格式:

  • vX.Y.Z: 具体版本
  • X.Y: 主次版本
  • latest: 最新版本

配置文件

配置文件支持 YAML 和 JSON 两种格式,包含以下配置项: * path: 匹配的请求路径前缀。 * target: 请求将被转发到的目标地址。 * vendor: 可选AI 服务提供商标识,用于显示对应的图标。支持的值包括: * google: Google (Gemini) * anthropic: Anthropic * openai: OpenAI * groq: Groq * huggingface: Hugging Face * x: xAI

示例配置YAML 格式):

server:
  port: "8080"
proxies:
  - path: "/gemini"
    target: "https://generativelanguage.googleapis.com"
    vendor: "google"
  - path: "/openai"
    target: "https://api.openai.com"
    vendor: "openai"

Web 界面

启动服务器后,访问 http://localhost:<端口号>/ (替换 <端口号> 为配置文件中指定的端口) 即可访问 Web 界面,查看代理规则和实时统计数据。

依赖

  • Echo: 高性能、可扩展、低内存占用的 Go Web 框架。
  • go-sqlite3: SQLite 驱动。

部署到 Vercel

本项目也可以部署到 Vercel 作为无服务器函数。在 Vercel 环境中,统计功能(数据库和统计中间件)将被禁用,/api/stats 接口将只返回代理节点信息(不包含请求次数)。

Vercel 配置

在 Vercel 项目设置中,需要配置 PROXIES_CONFIG 环境变量来定义代理规则。

  • PROXIES_CONFIG: 包含一个 JSON 数组的字符串,其中每个元素是一个代理配置对象。格式类似于 data/config-sample.json 文件中的 proxies 数组部分。

    示例 PROXIES_CONFIG 环境变量值:

    [
      {"path":"/gemini","target":"https://generativelanguage.googleapis.com"},
      {"path":"/google","target":"https://www.google.com"}
    ]
    

注意事项

  • 由于 Vercel 无服务器环境的限制,数据库和请求统计功能不可用。
  • /api/stats 接口在 Vercel 环境下仅返回代理节点的 pathtarget 信息,access_count 将固定为 0。
  • 请注意Vercel 由于不支持 go 语言的 Flush() 函数,导致流式输出不可用,因此不建议使用 Vercel 部署。

部署到 Render

可以将本项目部署为 Render 的 Web Service。

构建和部署

  1. 在 Render 控制台创建一个新的 Web Service。
  2. 连接你的 Git 仓库。
  3. 配置构建命令 (Build Command),例如 go build -o go-proxy main.go
  4. 配置启动命令 (Start Command),例如 ./go-proxy.
  5. 配置环境变量同 Vercel 配置。

配置

可以通过以下方式配置代理规则:

  1. 使用 data/config.yaml: 如果将 data 目录及其内容包含在部署中,项目将读取 data/config.yaml 文件。这是推荐的方式,与本地运行一致。
  2. 使用环境变量: 所有部署方式都支持设置环境变量。你可以通过环境变量来配置需要代理的连接,但是需要 JSON 格式,可以参照 config/config-sample.json 配置。

许可证

本项目采用 MIT 许可证