本文最后更新于 2025-10-11,文章内容可能已经过时。

Docker镜像加速服务器域名配置与Nginx端口转发指南

前言

在完成Docker镜像加速服务器搭建后,为其配置域名和Nginx反向代理是提升可用性和安全性的关键步骤。请确保理解每个命令的含义,并学会查看报错信息。

1. 系统准备与环境更新

更新系统包

sudo dnf update -y

添加EPEL仓库并安装Nginx

# CentOS 9默认仓库可能没有Nginx,添加EPEL仓库
sudo dnf install epel-release -y

# 安装Nginx
sudo dnf install nginx -y

启动并启用Nginx服务

sudo systemctl start nginx
sudo systemctl enable nginx

# 验证安装
nginx -v

正常应显示类似:nginx version: nginx/1.24.0

2. Nginx反向代理配置

备份原始配置文件(重要)

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

编辑主配置文件

sudo vi /etc/nginx/nginx.conf

配置反向代理(在http块内添加)

找到 http { ... }块,在其中添加以下server配置:

http {
    # 原有的全局配置保持不变
    ...
    
    # 新增反向代理配置
    server {
        listen       80;
        listen       443 ssl;
        
        # 填写你的域名(替换baidu.com)
        server_name  your-domain.com;
        
        # SSL证书路径(替换为实际路径)
        ssl_certificate /etc/nginx/your-domain.com_bundle.crt;
        ssl_certificate_key /etc/nginx/your-domain.com.key;
        
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        
        # 安全协议配置
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_buffer_size 8k;
        
        # 超时设置(适用于大文件传输)
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
        
        location / {
            # 转发到Docker Registry服务(端口5000)
            proxy_pass http://localhost:5000;
            
            # 重要头部信息传递
            proxy_set_header Host $host;
            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_set_header X-Nginx-Proxy true;
            
            # 性能优化
            proxy_buffering off;
            proxy_redirect off;
        }
    }
    
    # 其他原有配置保持不变
    ...
}

3. 配置验证与重启

检查语法正确性

sudo nginx -t

如果显示 syntax is oktest is successful,说明配置正确。

重启Nginx服务

sudo systemctl restart nginx

4. 前置条件检查清单

在继续之前,请确保以下条件已满足:

✅ DNS解析配置

  • 确保域名(如 your-domain.com)的DNS A记录已正确解析到服务器IP地址

✅ SSL证书准备

  • SSL证书文件已放置在指定路径(如 /etc/nginx/your-domain.com_bundle.crt

  • 私钥文件已放置在指定路径(如 /etc/nginx/your-domain.com.key

  • 证书文件权限正确(通常为600)

✅ 网络与防火墙配置

  • 服务器防火墙已放行80和443端口:

    sudo firewall-cmd --permanent --add-port=80/tcp
    sudo firewall-cmd --permanent --add-port=443/tcp
    sudo firewall-cmd --reload
  • 云服务商安全组规则已允许80/443端口入站流量

  • Docker Registry服务(端口5000)正常运行且可访问

5. 客户端Docker配置更新

在需要使用加速服务的机器上,修改Docker配置文件:

编辑daemon.json

sudo vi /etc/docker/daemon.json

配置镜像加速地址

{
  "registry-mirrors": ["https://your-domain.com"],
  "insecure-registries": ["your-domain.com"]
}

重启Docker服务

sudo systemctl restart docker

6. 功能测试

测试镜像拉取

docker pull hello-world

查看拉取日志

在服务器上查看Nginx访问日志,确认流量经过代理:

tail -f /var/log/nginx/access.log

7. 故障排除要点

常见问题排查

  1. Nginx启动失败​:检查配置文件语法 sudo nginx -t

  2. 证书错误​:确保证书路径正确且格式有效

  3. 连接超时​:检查防火墙和安全组设置

  4. 502 Bad Gateway​:确认Docker Registry服务在5000端口正常运行

日志查看命令

# Nginx错误日志
sudo tail -f /var/log/nginx/error.log

# Docker Registry日志
docker logs [registry-container-name]

总结

通过以上配置,您已经成功为Docker镜像加速服务器设置了域名访问和SSL加密,提供了更安全、更专业的服务。这种架构不仅提升了可用性,还为后续的监控和扩展奠定了基础。