织梦CMS - 轻松建站从此开始!

欧博ABG官网-欧博官方网址-会员登入

欧博官网利用nginx反向代理加速docker镜像拉取

时间:2024-11-04 21:28来源: 作者:admin 点击: 6 次
背景 之前写过一篇“利用cloudflare workers解决docker无法拉取镜像问题”的博客 cloudflare workers 本质上也是使用的反向代理,只是用了cloudflare免费的服务罢了 但操作过就会发现,流量并不能得到保证,有时快有时慢,甚至对于部分地区的人都不支持cloud

之前写过一篇“利用cloudflare workers解决docker无法拉取镜像问题”的博客

cloudflare workers 本质上也是使用的反向代理,欧博官网只是用了cloudflare免费的服务罢了

但操作过就会发现,流量并不能得到保证,有时快有时慢,甚至对于部分地区的人都不支持cloudflare

如果需求非常迫切,可以利用自己的服务器,通过nginx反向代理,欧博这样拉取镜像的速度就是自己服务器的速度了,如果服务器速度足够快,跑满自己的宽带速度都不是问题。

但是,相比于cloudflare,自己搭服务器是肯定有成本的,也就无法免费白嫖了。

准备资源

一台海外服务器,国内共有云厂商也都有提供海外服务器的服务,直接购买就可以了,新用户甚至可以白嫖,同时最重要的是需要有一定的带宽,否则,拉取速度也还是有限。

一个自己的域名 这里以docker.abc.com作为例子

域名对应的证书

部署 购买海外云服务器

这里就不做赘述了

安装系统环境 系统 nginx版本
ubuntu 22.04   nginx/1.18.0  
安装nginx apt install nginx -y 配置 vim /etc/nginx/sites-enabled/default 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的配置文件

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

然后重启docker

systemctl restart docker

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

(责任编辑:)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2024-11-15 19:11 最后登录:2024-11-15 19:11
栏目列表
推荐内容