wood
1
使用方法
1panel为例
登录账号设置
需要一个本论坛账号或者github账号
-
打开 https://connect.czl.net
-
登录你的论坛账号/github,
-
新建一个应用
这里假设 https://proxy-go
是你的要绑定的域名, 回源地址就是https://proxy-go/admin/api/oauth/callback
.
记得不勾选公开, 类型是Oauth2
-
创建成功会获取到一个Client ID
和 Client Secret
, 保存好, 稍后要用.
创建容器并运行
-
新建一个编排
, 使用这个docker-compose, 里面的OAUTH_CLIENT_ID
和OAUTH_CLIENT_SECRET
就是上面获取的.
最新镜像地址: woodchen/proxy-go:latest
稳定版镜像地址: woodchen/proxy-go:v1.0.4
持续稳定版镜像地址: woodchen/proxy-go:stable
图里的"OAUTH_ALLOWED_USERS"不用管, 已经删除了.
- 运行, 然后新建一个网站, 绑定
3336
端口, 就可以访问了.
参考nginx配置 location ^~ / {
proxy_pass http://localhost:3336;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
proxy_ssl_server_name off;
proxy_ssl_name $proxy_host;
proxy_buffering off;
proxy_cache_key $host$uri$is_args$args$http_accept;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
修改配置
在/admin/dashboard/config/
修改配置., 大概就像我这样:
压缩我没启用, 使用的是CDN的压缩, 本地用会占资源, 一般没必要, nginx可以进行压缩
固定路径主要反代一些js cdn资源, 直接用第一个会出错, 需要手动设置回源Host.
修改缓存配置
在/admin/dashboard/cache/
进行修改, 大概我这样, 可以自行调整:
使用示例, 也是建议的使用方法
比如我原图网址: https://b2.20200511.xyz/2025/03/67cff2273a20c.png
proxy-go的访问域名: https://img-test.czl.net
我现在要通过proxy-go来反代, 并且通过cloudflare images来优化.
我把 cfimg.20200511.xyz
通过cloudflare来解析, 具体解析到什么IP不重要, 只要是通过CF代理的就行了.
那么我这样配置:
默认路径使用直接的原图网址域名, 这样可以当文件小于200kb, 大于10M时不通过cloudflare images, 一是200kb以下是否优化影响不大, 二是超过10M的图片, cloudflare images优化不了, 这时候就直接反代原图网址, 反而更好
然后, 我添加一个扩展名映射:
目标URL: https://cfimg.czl.net/cdn-cgi/image/format=auto,metadata=none,onerror=redirect/https://b2.20200511.xyz
img-test.czl.net是cloudflare images优化的域名
中间是配置, 最后是原图网址的域名
保存后, 访问地址就变成了:
https://img-test.czl.net/img/2025/03/67cff2273a20c.png
构成:proxy-go的域名 + 选择映射的路径 + 原图的路径和文件名
这时候有两个情况:
- 文件在200kb到10M之间, 这时候反代的是这个网址:
https://cfimg.czl.net/cdn-cgi/image/format=auto,metadata=none,onerror=redirect/https://b2.20200511.xyz/2025/03/67cff2273a20c.png
- 文件小于200kb, 或者大于10M, 这时候反代原图网址:
https://b2.20200511.xyz/2025/03/67cff2273a20c.png
经过这么多天的肝, 总算整体优化好了. 本来作为一个主中间项目, 是不需要做这么多前端可视化配置的.
1是为了自己改方便, 虽然一般不改.
2 也是对小白友好, 毕竟光部署过程, 就少了很多很多了.也不用手动去改json项
我想: 对小白友好, 上手简单, 应该是一个现在非极客开源项目必须要做的事情.
wood
3
2024.10.31更新
新增cdnjs和jsdelivr等代理, 也可以用于unpkg, 单独一个代理方法.
国内js代理只有字节比较稳定了, 但是字节的太久没更新, 有些新的库没有, 不如自己直接代理, 更方便也更快.
2024.11.17更新
支持根据不同的文件回源不同的地址
适配cloudflare images的图片优化, 支持format=auto
相关想法来自:
2024.11.30更新
功能作用
主要是最好有一台国外服务器, 回国又不慢的, 类似我买的绿云日本1111 IIJ服务器, 香港服务器也很好, 可以反代国外资源, 然后在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
config里FixedPaths的功能
适合自己反代cdnjs和jsdelivr等, 可以在proxy-go前面套CDN
比如需要引用
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/3.5.12/vue.global.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
代理后把链接改成这样使用
https://proxy-go/cdnjs/ajax/libs/vue/3.5.12/vue.global.min.js
就是把https://cdnjs.cloudflare.com
改成https://proxy-go/cdnjs
就可以了, 类似南方大学的反代.
jsdelivr也类似
mirror 固定路由
比较适合接口类的CORS问题
访问https://proxy-go/mirror/https://example.com/path/to/resource
会实际访问https://example.com/path/to/resource
wood
13
删除OAUTH_ALLOWED_USERS的配置和限制
这部分功能已经移动到 connect.q58.club 去控制了
redirect_uri=https%3A%2F%2F127.0.0.1%3A443%2Fadmin%2Fapi%2Foauth%2Fcallback 请问一下登录的时候这里的回调地址为什么是127.0.0.1呢 是我的nginx配置有问题嘛
wood
18
具体在哪一步,还有部署流程告知下呢,跟nginx应该没关系
wood
20
晚点我看下我的反代配置。这里的url我记得是采用的你当前访问的域名
wood
21
location ^~ / {
proxy_pass http://localhost:3336;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
proxy_ssl_server_name off;
proxy_ssl_name $proxy_host;
proxy_buffering off;
proxy_cache_key $host$uri$is_args$args$http_accept;
add_header Cache-Control no-cache;
add_header Access-Control-Allow-Origin *;
}
这个浏览器的回调域名, 是使用的你当前访问的域名.
比如你部署在 a.com, 你得通过https://a.com/admin/
去访问登录页面, 回调地址才是 a.com的, 而不是connect提供的回调地址.
wood
23
我加强了一下验证逻辑, 因为我发现之前即使授权失败, 也能登录后台 
新的docker镜像需要添加OAUTH_CLIENT_SECRET
参数.
我刚想给你说了 我授权失败了然后点击拒绝还能进去 但是日志中显示 POST /admin/api/logout → 200 logout success 已经登出了 但是修改config 显示修改成功 刷新页面之后发现并没有生效
我按照你的nginx 配置后redirect uri 变成我当前的页面了但是还是授权失败 我不知道哪里有问题 我proxy服务的域名和登录平台中填写的回调域名一致