本帖最后由 鸡不择食 于 2024-6-12 21:07 编辑  
 
完整见 https://t.me/mjjgarden/8  
参考了 https://blog.lty520.faith/博文/自建docker-hub加速镜像/ 的代码 
支持 
registry-1.docker.io 
gcr.io 
ghcr.io 
registry.gitlab.com 
nvcr.io  
quay.io 
代码已经简化了, 直接注释代码 就能反代 目标 regisry了. 
 
先1panel 新建站点 使用反代功能, 新建后删除反代. 
 
然后编辑 站点配置, 添加 下面代码 
- ... 原代码...
 
 -     
 
 -     location / {
 
 -         resolver 1.1.1.1;
 
 -         # 这个docker hub 官方registry,大部份人用这个就够了,
 
 -         set $target_host registry-1.docker.io;
 
 -         # 根据情况自己选择使用, 一个站点(host)只能用一个 目标registry, 需要多个反代多个目标就建立多个不同站点.
 
 -         # set $target_host ghcr.io; # github 使用的人也不少.
 
 -         # set $target_host gcr.io; # Google
 
 -         # set $target_host nvcr.io; # nvdia
 
 -         # set $target_host registry.gitlab.com; # gitlab
 
 -         # set $target_host quay.io; # quay
 
 -   
 
 -   proxy_pass https://$backend_host; 
 
 -         proxy_set_header Host $backend_host; 
 
  
-         proxy_set_header X-Real-IP $remote_addr; 
 
 -         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
 
 -         proxy_set_header X-Forwarded-Proto $scheme; 
 
 -         # 关闭缓存
 
 -         proxy_buffering off; 
 
 -         # 转发认证相关的头部
 
 -         proxy_set_header Authorization $http_authorization; 
 
 -         proxy_pass_header Authorization; 
 
 -         # 对 upstream 状态码检查,实现 error_page 错误重定向
 
 -         proxy_intercept_errors on; 
 
 -         # error_page 指令默认只检查了第一次后端返回的状态码,开启后可以跟随多次重定向。
 
 -         recursive_error_pages on; 
 
 -         # 根据状态码执行对应操作,以下为301、302、307状态码都会触发
 
 -         #error_page 301 302 307 = @handle_redirect;
 
 -         error_page 429 = @handle_too_many_requests; 
 
 -     }
 
 -     
 
  
-   #处理重定向
 
 -     location @handle_redirect {
 
 -         resolver 1.1.1.1;
 
 -         set $saved_redirect_location '$upstream_http_location';
 
 -         proxy_pass $saved_redirect_location;
 
 -     }
 
 -     # 处理429错误, 如registry-1.docker.io 短时间请求太多会触发, 此时可以cf work方案接力, 或者 使用 warp
 
 -     location @handle_too_many_requests {
 
 -         #proxy_set_header Host cfcr.j8.work;  # 对应 Worker设置的域名
 
 -         #proxy_pass http://cfcr.j8.work; # 对应 Worker设置的域名
 
 -         #proxy_set_header Host $http_host;
 
 -     }
 
  复制代码  |