前提,需要代理的服务器能访问Docker的镜像地址,例如使用香港或者国外的服务器搭建
反向代理Docker镜像源地址
# Docker Hub 认证接口location=/token{proxy_pass https://auth.docker.io/token$is_args$args;proxy_ssl_server_name on;proxy_set_header Host auth.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 https;proxy_set_header Authorization$http_authorization;proxy_pass_header Authorization;}location ^~ /v2/{proxy_pass https://registry-1.docker.io;proxy_ssl_server_name on;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 https;proxy_set_header Authorization$http_authorization;proxy_pass_header Authorization;proxy_http_version1.1;add_header X-Debug"v2 matched"always;proxy_hide_header WWW-Authenticate;add_header WWW-Authenticate'Bearer realm="https://docker.xxx.top/token",service="registry.docker.io"'always;}主配置,把docker.xxx.top修改为自己的域名
server{listen10080;server_name docker.xxx.top;resolver8.8.8.81.1.1.1valid=300s;index index.php index.html index.htm default.php default.htm default.html;access_log /www/sites/docker.xxx.top/log/access.log main;error_log /www/sites/docker.xxx.top/log/error.log;resolver_timeout 5s;location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md){return404;}location ^~ /.well-known/acme-challenge{allow all;root /usr/share/nginx/html;}if($uri~"^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$"){return403;}root /www/sites/docker.xxx.top/index;include /www/sites/docker.xxx.top/proxy/*.conf;}