8000 GitHub - woodchen-ink/proxy-go: go+nextjs+shadcn. 不同路径代理不同源的代理服务. 支持压缩, cdnjs等类似站点的代理, 大文件流式传输, 适配Cloudflare Images代理
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

go+nextjs+shadcn. 不同路径代理不同源的代理服务. 支持压缩, cdnjs等类似站点的代理, 大文件流式传输, 适配Cloudflare Images代理

License

Notifications You must be signed in to change notification settings

woodchen-ink/proxy-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proxy-Go

A 'simple' reverse proxy server written in Go.

使用方法: https://www.sunai.net/t/topic/165

最新镜像地址: woodchen/proxy-go:latest

新版统计仪表盘

image

图片

image

仪表统计盘

image

配置页

image

缓存页

image

说明

  1. 支持gzip和brotli压缩
  2. 不同路径代理不同站点
  3. 回源Host修改
  4. 大文件使用流式传输, 小文件直接提供
  5. 可以按照文件后缀名代理不同站点, 方便图片处理等
  6. 适配Cloudflare Images的图片自适应功能, 透传Accept头, 支持format=auto
  7. 支持网页端监控和管理

功能特性

  • 🚀 多路径代理: 根据不同路径代理到不同的目标服务器
  • 🔄 扩展名规则: 根据文件扩展名和大小智能选择目标服务器
  • 🌐 域名过滤: 支持根据请求域名应用不同的扩展规则
  • 📦 压缩支持: 支持Gzip和Brotli压缩
  • 🎯 302跳转: 支持302跳转模式
  • 📊 缓存管理: 智能缓存机制提升性能
  • 📈 监控指标: 内置监控和指标收集

域名过滤功能

功能介绍

新增的域名过滤功能允许你为不同的请求域名配置不同的扩展规则。这在以下场景中非常有用:

  1. 多域名服务: 一个代理服务绑定多个域名(如 a.com 和 b.com)
  2. 差异化配置: 不同域名使用不同的CDN或存储服务
  3. 精细化控制: 根据域名和文件类型组合进行精确路由

配置示例

{
  "MAP": {
    "/images": {
      "DefaultTarget": "https://default-cdn.com",
      "ExtensionMap": [
        {
          "Extensions": "jpg,png,webp",
          "Target": "https://a-domain-cdn.com",
          "SizeThreshold": 1024,
          "MaxSize": 2097152,
          "Domains": "a.com",
          "RedirectMode": false
        },
        {
          "Extensions": "jpg,png,webp", 
          "Target": "https://b-domain-cdn.com",
          "SizeThreshold": 1024,
          "MaxSize": 2097152,
          "Domains": "b.com",
          "RedirectMode": true
        },
        {
          "Extensions": "mp4,avi",
          "Target": "https://video-cdn.com",
          "SizeThreshold": 1048576,
          "MaxSize": 52428800
          // 不指定Domains,对所有域名生效
        }
      ]
    }
  }
}

使用场景

场景1: 多域名图片CDN

请求: https://a.com/images/photo.jpg (1MB)
结果: 代理到 https://a-domain-cdn.com/photo.jpg

请求: https://b.com/images/photo.jpg (1MB)  
结果: 302跳转到 https://b-domain-cdn.com/photo.jpg

请求: https://c.com/images/photo.jpg (1MB)
结果: 代理到 https://default-cdn.com/photo.jpg (使用默认目标)

场景2: 域名+扩展名组合规则

请求: https://a.com/files/video.mp4 (10MB)
结果: 代理到 https://video-cdn.com/video.mp4 (匹配通用视频规则)

请求: https://b.com/files/video.mp4 (10MB)
结果: 代理到 https://video-cdn.com/video.mp4 (匹配通用视频规则)

配置字段说明

  • Domains: 逗号分隔的域名列表,指定该规则适用的域名
    • 为空或不设置:匹配所有域名
    • 单个域名:"a.com"
    • 多个域名:"a.com,b.com,c.com"
  • Extensions: 文件扩展名(与之前相同)
  • Target: 目标服务器(与之前相同)
  • SizeThreshold/MaxSize: 文件大小范围(与之前相同)
  • RedirectMode: 是否使用302跳转(与之前相同)

匹配优先级

  1. 域名匹配: 首先筛选出匹配请求域名的规则
  2. 扩展名匹配: 在域名匹配的规则中筛选扩展名匹配的规则
  3. 文件大小匹配: 根据文件大小选择最合适的规则
  4. 目标可用性: 检查目标服务器是否可访问
  5. 默认回退: 如果没有匹配的规则,使用默认目标

日志输出

启用域名过滤后,日志会包含域名信息:

[SelectRule] /image.jpg -> 选中规则 (域名: a.com, 文件大小: 1.2MB, 在区间 1KB 到 2MB 之间)
[Redirect] /image.jpg -> 使用选中规则进行302跳转 (域名: b.com): https://b-domain-cdn.com/image.jpg

原有功能

功能作用

主要是最好有一台国外服务器, 回国又不慢的, 可以反代国外资源, 然后在proxy-go外面套个cloudfront或者Edgeone, 方便国内访问.

config里MAP的功能

目前我的主要使用是反代B2, R2, Oracle存储桶之类的. 也可以反代网站静态资源, 可以一并在CDN环节做缓存.

根据config示例作示范

访问https://proxy-go/path1/123.jpg, 实际是访问 https://path1.com/path/path/path/123.jpg 访问https://proxy-go/path2/749.movie, 实际是访问https://path2.com/749.movie

mirror 固定路由

比较适合接口类的CORS问题

访问https://proxy-go/mirror/https://example.com/path/to/resource

会实际访问https://example.com/path/to/resource

About

go+nextjs+shadcn. 不同路径代理不同源的代理服务. 支持压缩, cdnjs等类似站点的代理, 大文件流式传输, 适配Cloudflare Images代理

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages

0