实战学习Liunx(图文教程三十五)
本文最后更新于 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 ok
和 test 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. 故障排除要点
常见问题排查
-
Nginx启动失败:检查配置文件语法
sudo nginx -t
-
证书错误:确保证书路径正确且格式有效
-
连接超时:检查防火墙和安全组设置
-
502 Bad Gateway:确认Docker Registry服务在5000端口正常运行
日志查看命令
# Nginx错误日志
sudo tail -f /var/log/nginx/error.log
# Docker Registry日志
docker logs [registry-container-name]
总结
通过以上配置,您已经成功为Docker镜像加速服务器设置了域名访问和SSL加密,提供了更安全、更专业的服务。这种架构不仅提升了可用性,还为后续的监控和扩展奠定了基础。
- 感谢你赐予我前进的力量