跳至主要内容

自建Docker Hub加速镜像

 

方案一:使用 Nginx 搭建

系统:Ububtu 22.04 服务器:Zgocloud 洛杉矶 9929+CMIN2
提到要加速一个网站,自然就能想到使用 Nginx 反代一下了。接下来是具体的配置方案

  1. 安装 Nginx

    sudo apt update
    sudo apt install nginx
    
  2. 防火墙放行指定端口
    我这里使用的防火墙是系统自带的 UFW,并且没有开厂商提供的防火墙(忘记是关掉了还是本来就没有,反正没开),所以只需要 sudo ufw allow ‘Nginx Full’ 一条命令即可,这样就会放行 IPv4 和 IPv6 的 80 和 443 端口(当然也可以手动 sudo ufw allow 443 这样只开放 443 端口)
    如果没有使用防火墙,就不用设置这一步,如果还使用了厂商提供的防火墙,就需要在厂商的面板处同样开放这些端口

  3. 配置 Nginx 使用命令 sudo vim /etc/nginx/nginx.conf 编辑 Nginx 配置,在 http 块下增加一个 server 块

    /etc/nginx/nginx.conf

    #反代docker hub镜像源
         server {
                 listen 443 ssl;
                 server_name 域名;
    
                 ssl_certificate 证书地址;
                 ssl_certificate_key 密钥地址;
    
                 ssl_session_timeout 24h;
                 ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
                 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    
                 location / {
                         proxy_pass https://registry-1.docker.io;  # Docker Hub 的官方镜像仓库
                         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;
                         # error_page 指令默认只检查了第一次后端返回的状态码,开启后可以跟随多次重定向。
                         recursive_error_pages on;
                         # 根据状态码执行对应操作,以下为301、302、307状态码都会触发
                         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;
                 }
         }
    

    然后按 Esc ,输入 : wq 保存退出即可

  4. 重新加载 Nginx 配置 输入命令 sudo nginx -s reload,没有报错就说明配置已经生效

评论