mirror of
https://github.com/WJQSERVER-STUDIO/ghproxy.git
synced 2026-02-03 00:01:10 +08:00
v1.0.0
This commit is contained in:
parent
b6f8db843a
commit
45c537e313
8 changed files with 250 additions and 5 deletions
2
.github/workflows/build-dev.yml
vendored
2
.github/workflows/build-dev.yml
vendored
|
|
@ -59,7 +59,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: build
|
needs: build
|
||||||
env:
|
env:
|
||||||
IMAGE_NAME: wjqserver/ghproxy-test
|
IMAGE_NAME: wjqserver/ghproxy
|
||||||
DOCKERFILE: docker/dockerfile/dev/Dockerfile
|
DOCKERFILE: docker/dockerfile/dev/Dockerfile
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
|
||||||
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
|
|
@ -58,7 +58,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: build # 确保这个作业在 build 作业完成后运行
|
needs: build # 确保这个作业在 build 作业完成后运行
|
||||||
env:
|
env:
|
||||||
IMAGE_NAME: wjqserver/ghproxy-test # 定义镜像名称变量
|
IMAGE_NAME: wjqserver/ghproxy # 定义镜像名称变量
|
||||||
DOCKERFILE: docker/dockerfile/release/Dockerfile
|
DOCKERFILE: docker/dockerfile/release/Dockerfile
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
|
||||||
116
CHANGELOG.md
Normal file
116
CHANGELOG.md
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
# 更新日志
|
||||||
|
|
||||||
|
v1.0.0
|
||||||
|
---
|
||||||
|
- CHANGE: 项目正式发布, 并迁移至[WJQSERVER-STUDIO/ghproxy](https://github.com/WJQSERVER-STUDIO/ghproxy)
|
||||||
|
- CHANGE: 再次重构代码,优化性能,提升稳定性
|
||||||
|
- CHANGE: 使用golang-temp项目作为底层构建,标准化日志与配置模块
|
||||||
|
- CHANGE: 从原项目的Apache License Version 2.0迁移至WJQserver Studio License
|
||||||
|
|
||||||
|
24w06a
|
||||||
|
---
|
||||||
|
- CHANGE: 与v1.0.0版本同步
|
||||||
|
|
||||||
|
v0.2.0
|
||||||
|
---
|
||||||
|
底层核心代码重写,彻底代表着项目进入自主可控的开发阶段,彻底脱离原有实现
|
||||||
|
- ADD: 增加多处日志记录,便于审计与排障
|
||||||
|
- CHANGE: 优化代码结构,进一步模块化,同时提升性能
|
||||||
|
- ADD: 使用req库重构代码,提升请求伪装能力,尽可能bypass反爬机制
|
||||||
|
|
||||||
|
24w05b
|
||||||
|
---
|
||||||
|
- CHANGE: 重命名proxychrome函数
|
||||||
|
- ADD: 增加多处日志记录,便于审计与排障
|
||||||
|
|
||||||
|
24w05a
|
||||||
|
---
|
||||||
|
- FIX: 修正上一版本的req请求未继承请求方式的问题
|
||||||
|
- CHANGE: 优化代码结构,进一步模块化,同时提升性能
|
||||||
|
|
||||||
|
24w04b
|
||||||
|
---
|
||||||
|
- CHANGE: 更换Docker基础镜像为daily版本
|
||||||
|
- ADD: 新增使用req库实现代理请求,使用chrome TLS指纹发起请求
|
||||||
|
|
||||||
|
24w04a
|
||||||
|
---
|
||||||
|
- CHANGE: 调整程序结构,使用init函数初始化配置,并优化代码结构
|
||||||
|
|
||||||
|
v0.1.7
|
||||||
|
---
|
||||||
|
- CHANGE: 合入上游(wjqserver/caddy:latest)安全更新, 增强镜像安全性
|
||||||
|
|
||||||
|
24w03b
|
||||||
|
---
|
||||||
|
- CHANGE: 合入上游(wjqserver/caddy:latest)安全更新, 增强镜像安全性
|
||||||
|
|
||||||
|
v0.1.6
|
||||||
|
---
|
||||||
|
- ADD: 新增跨域配置选项
|
||||||
|
- CHANGE: 更新UA标识
|
||||||
|
|
||||||
|
24w03a
|
||||||
|
---
|
||||||
|
- CHANGE: 改进Docker代理相关Caddy配置
|
||||||
|
- ADD: 新增跨域配置选项
|
||||||
|
|
||||||
|
v0.1.5
|
||||||
|
---
|
||||||
|
- CHANGE: 更新Go版本至v1.23.1
|
||||||
|
- CHANGE: 优化代码行为
|
||||||
|
|
||||||
|
24w02b
|
||||||
|
---
|
||||||
|
- ADD: 新增Docker代理 (未并入正式版)
|
||||||
|
|
||||||
|
24w02a
|
||||||
|
---
|
||||||
|
- CHANGE: 更新Go版本至v1.23.1
|
||||||
|
- CHANGE: 优化代码行为
|
||||||
|
|
||||||
|
v0.1.4
|
||||||
|
---
|
||||||
|
正式版24w01b内容更新
|
||||||
|
- ADD: 新增外部文件配置功能
|
||||||
|
- ADD: 新增日志功能
|
||||||
|
- CHANGE: 优化代码结构,提升性能
|
||||||
|
- CHANGE: 改进前端界面,加入页脚
|
||||||
|
|
||||||
|
24w01b
|
||||||
|
---
|
||||||
|
标志着项目正式进入自主开发阶段
|
||||||
|
- ADD: 新增外部文件配置功能
|
||||||
|
- ADD: 新增日志功能
|
||||||
|
- CHANGE: 优化代码结构,提升性能
|
||||||
|
- CHANGE: 改进前端界面,加入页脚
|
||||||
|
|
||||||
|
v0.1.3
|
||||||
|
---
|
||||||
|
开始自行维护项目,脱离上游更新
|
||||||
|
- CHANGE: 改进已有实现,增强程序稳定性
|
||||||
|
|
||||||
|
24w01a
|
||||||
|
---
|
||||||
|
首个DEV版本
|
||||||
|
- CHANGE: 同步更新
|
||||||
|
|
||||||
|
v0.1.2
|
||||||
|
---
|
||||||
|
- ADD: 新增项目介绍
|
||||||
|
- CHANGE: 限制默认文件大小限制到256M
|
||||||
|
|
||||||
|
v0.1.1
|
||||||
|
---
|
||||||
|
- ADD: Apache License Version 2.0
|
||||||
|
- FIX: 改进部分代码逻辑
|
||||||
|
- CHANGE: 将Go升级至v1.23.0
|
||||||
|
|
||||||
|
v0.1.0
|
||||||
|
---
|
||||||
|
项目的第一个版本
|
||||||
|
- ADD: 实现速率限制
|
||||||
|
- ADD: 实现符合[RFC 7234](https://httpwg.org/specs/rfc7234.html)的HTTP缓存机制
|
||||||
|
- ADD: 实现action编译
|
||||||
|
- ADD: 实现Docker部署
|
||||||
|
- INFO: 使用Caddy作为Web服务器,通过Caddy实现了缓存与速率限制
|
||||||
|
|
@ -1 +1 @@
|
||||||
24w01a
|
24w06a
|
||||||
98
README.md
98
README.md
|
|
@ -1 +1,97 @@
|
||||||
# golang-temp
|
# GhProxy
|
||||||
|
|
||||||
|

|
||||||
|
[](https://goreportcard.com/report/github.com/WJQSERVER-STUDIO/ghproxy)
|
||||||
|
|
||||||
|
使用Go实现的GHProxy,用于加速部分地区Github仓库的拉取,支持速率限制,用户鉴权,支持Docker部署
|
||||||
|
|
||||||
|
## 项目说明
|
||||||
|
|
||||||
|
### 项目特点
|
||||||
|
|
||||||
|
- 基于Go语言实现,使用[Gin框架](https://github.com/gin-gonic/gin)与[req库](https://github.com/imroc/req)]
|
||||||
|
- 支持Git clone,raw,realeases等文件拉取
|
||||||
|
- 支持Docker部署
|
||||||
|
- 支持速率限制
|
||||||
|
- 支持用户鉴权
|
||||||
|
- 使用Caddy作为Web Server
|
||||||
|
- 基于[WJQSERVER-STUDIO/golang-temp](https://github.com/WJQSERVER-STUDIO/golang-temp)模板构建,具有标准化的日志记录与构建流程
|
||||||
|
|
||||||
|
### 项目开发过程
|
||||||
|
|
||||||
|
**本项目是[WJQSERVER-STUDIO/ghproxy-go](https://github.com/WJQSERVER-STUDIO/ghproxy-go)的重构版本,实现了原项目原定功能的同时,进一步优化了性能**
|
||||||
|
本项目源于[WJQSERVER-STUDIO/ghproxy-go](https://github.com/WJQSERVER-STUDIO/ghproxy-go)与[WJQSERVER/ghproxy-go-0RTT](https://github.com/WJQSERVER/ghproxy-go-0RTT)两个项目,前者带来了实现框架与资源,后者带来了解决Git clone问题的办法,使得本项目从net/http标准库切换至Gin框架,已解决此困扰已久的问题,在此基础上,本项目进一步优化了性能,并添加了用户鉴权功能,使得部署更加安全可靠。
|
||||||
|
关于此项目的详细开发过程,请参看Commit记录与[CHANGELOG.md](https://github.com/WJQSERVER-STUDIO/ghproxy/blob/main/CHANGELOG.md)
|
||||||
|
|
||||||
|
- V1.0.0 迁移至本仓库,并再次重构内容实现
|
||||||
|
- v0.2.0 重构项目实现,Git clone的实现完全自主化
|
||||||
|
|
||||||
|
### LICENSE
|
||||||
|
|
||||||
|
本项目使用WSL LICENSE Version1.2 (WJQSERVER STUDIO LICENSE Version1.2)
|
||||||
|
|
||||||
|
在v1.0.0版本之前,本项目继承于[WJQSERVER-STUDIO/ghproxy-go](https://github.com/WJQSERVER-STUDIO/ghproxy-go)的APACHE2.0 LICENSE VERSION
|
||||||
|
|
||||||
|
## 使用示例
|
||||||
|
|
||||||
|
```
|
||||||
|
https://ghproxy.1888866.xyz/raw.githubusercontent.com/WJQSERVER-STUDIO/tools-stable/main/tools-stable-ghproxy.sh
|
||||||
|
|
||||||
|
git clone https://ghproxy.1888866.xyz/github.com/WJQSERVER-STUDIO/ghproxy.git
|
||||||
|
```
|
||||||
|
|
||||||
|
## 部署说明
|
||||||
|
|
||||||
|
### Docker部署
|
||||||
|
|
||||||
|
- Docker-cli
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run -p 7210:80 -v ./ghproxy/log/run:/data/ghproxy/log -v ./ghproxy/log/caddy:/data/caddy/log --restart always wjqserver/ghproxy
|
||||||
|
```
|
||||||
|
|
||||||
|
- Docker-Compose
|
||||||
|
|
||||||
|
参看[docker-compose.yml](https://github.com/WJQSERVER-STUDIO/ghproxy/blob/main/docker/compose/docker-compose.yml)
|
||||||
|
|
||||||
|
### 外部配置文件
|
||||||
|
|
||||||
|
本项目采用config.yaml作为外部配置,默认配置如下
|
||||||
|
使用Docker部署时,慎重修改config.yaml,以免造成不必要的麻烦
|
||||||
|
|
||||||
|
```
|
||||||
|
port: 8080 # 监听端口
|
||||||
|
host: "127.0.0.1" # 监听地址
|
||||||
|
sizelimit: 131072000 # 125MB
|
||||||
|
logfilepath: "/data/ghproxy/log/ghproxy-0rtt.log" # 日志文件路径
|
||||||
|
CorsAllowOrigins: true # 是否允许跨域请求
|
||||||
|
auth: true # 是否开启鉴权
|
||||||
|
authtoken: "test" # 鉴权token
|
||||||
|
```
|
||||||
|
|
||||||
|
### Caddy反代配置
|
||||||
|
|
||||||
|
```
|
||||||
|
example.com {
|
||||||
|
reverse_proxy {
|
||||||
|
to 127.0.0.1:7210
|
||||||
|
header_up X-Real-IP {remote_host}
|
||||||
|
header_up X-Real-IP {http.request.header.CF-Connecting-IP}
|
||||||
|
header_up X-Forwarded-For {http.request.header.CF-Connecting-IP}
|
||||||
|
header_up X-Forwarded-Proto {http.request.header.CF-Visitor}
|
||||||
|
}
|
||||||
|
encode zstd gzip
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## TODO & BETA
|
||||||
|
|
||||||
|
### TODO
|
||||||
|
|
||||||
|
- [x] 允许更多参数通过config结构传入
|
||||||
|
- [x] 改进程序效率
|
||||||
|
- [x] 用户鉴权
|
||||||
|
|
||||||
|
### BETA
|
||||||
|
|
||||||
|
- [x] Docker Pull 代理
|
||||||
|
|
|
||||||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
||||||
0.0.1
|
1.0.0
|
||||||
|
|
@ -94,6 +94,22 @@
|
||||||
file_server
|
file_server
|
||||||
import cache 60s 24h
|
import cache 60s 24h
|
||||||
}
|
}
|
||||||
|
handle_errors {
|
||||||
|
@redirects `{err.status_code} in [301, 302, 307]`
|
||||||
|
reverse_proxy @redirects {
|
||||||
|
header_up Location {http.response.header.Location}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
route /v2* {
|
||||||
|
reverse_proxy https://registry-1.docker.io {
|
||||||
|
header_up Host registry-1.docker.io
|
||||||
|
header_up X-Real-IP {remote}
|
||||||
|
header_up X-Forwarded-For {http.request.header.X-Forwarded-For}
|
||||||
|
header_up X-Forwarded-Proto {scheme}
|
||||||
|
header_up Authorization {http.request.header.Authorization}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
import /data/caddy/config.d/*
|
import /data/caddy/config.d/*
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,23 @@
|
||||||
file_server
|
file_server
|
||||||
import cache 60s 24h
|
import cache 60s 24h
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handle_errors {
|
||||||
|
@redirects `{err.status_code} in [301, 302, 307]`
|
||||||
|
reverse_proxy @redirects {
|
||||||
|
header_up Location {http.response.header.Location}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
route /v2* {
|
||||||
|
reverse_proxy https://registry-1.docker.io {
|
||||||
|
header_up Host registry-1.docker.io
|
||||||
|
header_up X-Real-IP {remote}
|
||||||
|
header_up X-Forwarded-For {http.request.header.X-Forwarded-For}
|
||||||
|
header_up X-Forwarded-Proto {scheme}
|
||||||
|
header_up Authorization {http.request.header.Authorization}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
import /data/caddy/config.d/*
|
import /data/caddy/config.d/*
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue