Rocky Linux 9 配置Nginx反向代理加速docker镜像拉取

安装nginx


dnf install nginx -y

配置


vi /etc/nginx/sites-enabled/docker.conf

server {
	    #同时监听80和443端口
        listen     80;
	    listen     443 ssl;
	    server_name  docker.abc.com;# 需要修改成自己的域名
	    charset utf-8;
	
        if ( $scheme = 'http' ) {
            return 302 https://docker.abc.com/;# 需要修改成自己的域名
	    }
	
	    #设置证书部分
	    ssl_certificate ssl/fullchain.pem;
	    ssl_certificate_key ssl/privkey.pem;
	    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
        location / {
                    # Docker hub 的官方镜像仓库
                    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;
                    # 对 upstream 状态码检查,实现 error_page 错误重定向
                    proxy_intercept_errors on;
                    recursive_error_pages on;
                    # 根据状态码执行对应操作,以下为381、302、387状态码都会触发
                    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;
        }
}

需要注意的是,证书存放在 /etc/nginx/ssl 文件夹中

解析域名


需要将域名解析成这个服务器的公网地址,并在防火墙上做对应的放通

重启服务


systemctl restart nginx
systemctl enable nginx.servic

测试拉取


例如 要拉取busybox的最新镜像

之前的方式是

docker pull busybox:latest
通过代理来访问,就需要修改成

docker pull docker.abc.com/library/busybox:latest
如果不希望这么麻烦

直接修改docker的配置文件

vi /etc/docker/daemon.json

{
"registry-mirrors": [
"https://docker.abc.com"
],
}

 

然后重启docker

systemctl restart docker
最后该怎么拉取镜像还是怎么拉取。