境外服务器一台、域名一个、需要配置SSL证书(必须要配置使用宝塔免费申请即可) 版本一 # 用于 Docker 代理服务 location /v2/ { proxy_pass https://registry-1.docker.io; proxy_set_header Host registry-1.docker.io; 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; proxy_intercept_errors on; recursive_error_pages on; error_page 301 302 307 = @handle_redirect; } location @handle_redirect { resolver 1.1.1.1; set $saved_redirect_location '$upstream_http_location'; proxy_pass $saved_redirect_location; } # 用于 Docker 代理服务 版本二 增加超时时间,推荐使用这个,超时时间可以适当修改长一点 # 用于 Docker 代理服务 location /v2/ { proxy_pass https://registry-1.docker.io; proxy_set_header Host registry-1.docker.io; 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_request_buffering off; proxy_http_version 1.1; proxy_read_timeout 3600s; # 设置读取超时时间为 1 小时 proxy_send_timeout 3600s; # 设置发送超时时间为 1 小时 send_timeout 3600s; # 设置发送超时时间为 1 小时 proxy_connect_timeout 3600s; # 设置连接超时时间为 1 小时 proxy_set_header Authorization $http_authorization; proxy_pass_header Authorization; proxy_intercept_errors on; recursive_error_pages on; error_page 301 302 307 = @handle_redirect; } location @handle_redirect { resolver 1.1.1.1; set $saved_redirect_location '$upstream_http_location'; proxy_pass $saved_redirect_location; } # 用于 Docker 代理服务 最好改一下nginx链接超时时间改长一点 如果没安装docker ubuntu一键安装docker最新版脚本 bash <(wget -qO- giie.cn/sh/docker-ubuntu.sh) 如果没安装docker用一键脚本安装的不用操作下面两步 直接输入加入域名然后重启Docker服务开始测试即可 配置镜像加速,如果你不是用的一键脚本安装就手动配置一下 sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": ["改成你的域名"] } EOF 重启Docker服务 sudo systemctl daemon-reload sudo systemctl restart docker 拉取一个Docker镜像以测试配置是否生效: docker run hello-world