Cloudflare Workers反代Github私有仓库

Cloudflare Pages 虽然可以反代 Github 私有仓库,但是存在着以下的限制:

  • 同一时间只支持构建一个项目
  • 每月最多构建 500 次
  • 最大支持 10 个自定义域名
  • 网站最多包含 20000 个文件
  • 最大文件大小 25M

如果你的仓库变动比较频繁,并且对实时性有要求,那么 Workers 更符合你的需求,Workers 每日有 10 万次调用额度,远远超出 Pages 的每月 500 次。

具体步骤:

  1. 在 github 创建好私有仓库
  2. 新建 Personal access tokens
    必须选择 classic,Expiration 为 No expiration,在下面的 Select scopes 选择 repo, 注意保存生成的 token
  3. Cloudflare 账户主页选择 workers-and-pages,新建一个 workers 函数,模板和名称任意,编辑代码,输入以下内容:
export default {async fetch(request, env, ctx) {let path = request.url.split("/").pop()
    let token = "刚才生成的 token"
    let owner = "github 用户名"
    let repo = "github 仓库名"
    let url = `https://api.github.com/repos/${owner}/${repo}/contents/${path}`
    if (path == "") {return new Response("Not found")
    }
    let download_url = await fetch(url, {
      method: 'GET',
      headers: {
        "Accept": "application/vnd.github+json",
        "Authorization": `Bearer ${token}`,
        "X-GitHub-Api-Version": "2022-11-28",
        "User-Agent": request.headers["User-Agent"]
      }
    })
    let origin_url = await download_url.json()
    if (origin_url["name"] != path) {return new Response("Not found")
    }
    let origin = await fetch(origin_url["download_url"], {
      method: 'GET',
      headers: {"User-Agent": request.headers["User-Agent"]
      }
    })
    return origin
  },
};

将以上代码中的 token、owner、repo 替换成自己的,保存部署即可
访问:https://workers 域名 / 仓库文件相对路径,即可获取私有仓库的文件

正文完
 1
admin
版权声明:本站原创文章,由 admin 于2023-07-21发表,共计1122字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。