文基于 Nginx + Docker 环境,以新增 test 服务为例,包含服务部署、域名解析、HTTPS 配置、开机自启、重启 502 终极修复全流程,无任何隐藏坑点,适用于个人博客、API 服务、Web 应用等场景。
一、前置环境
云服务器(CentOS/Debian/Ubuntu)
已安装:
Docker、Nginx、Certbot(SSL 证书工具)已备案域名(本文示例:
test.songlw.cn)
二、完整操作步骤(复制即可用)
步骤 1:Docker 部署 test 服务(配置开机自启)
所有后端服务必须用 Docker 部署并配置自启,这是稳定运行的基础。
bash
运行
# 1. 拉取服务镜像(替换为你的服务镜像,示例为通用Web服务)
docker pull 你的镜像名:版本号
# 2. 创建并启动容器(核心:配置 --restart=always 开机自启)
# -p 宿主机端口:容器端口 自定义未占用端口,示例:8081
docker run -d \
--name test \
--restart=always \
-p 8081:80 \
你的镜像名:版本号
# 3. 验证容器是否运行(看到 UP 即为成功)
docker ps
步骤 2:域名 DNS 解析
登录阿里云 / 腾讯云域名控制台,添加二级域名指向你的服务器 IP:
表格
步骤 3:Nginx 配置反向代理(核心)
创建 Nginx 配置文件,实现HTTP 跳转 HTTPS + 代理 Docker 服务。
bash
运行
# 创建配置文件(推荐统一放在 conf.d 目录)
nano /etc/nginx/conf.d/test.conf
粘贴标准无报错配置(替换域名 / 端口即可):
nginx
# 80端口强制跳转HTTPS(安全+SEO)
server {
listen 80;
listen [::]:80;
server_name test.songlw.cn; # 你的test服务域名
return 301 https://$host$request_uri;
}
# HTTPS 代理配置
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name test.songlw.cn;
# SSL证书(后续自动生成)
ssl_certificate /etc/letsencrypt/live/test.songlw.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.songlw.cn/privkey.pem;
# 反向代理Docker服务
location / {
proxy_pass http://127.0.0.1:8081; # 对应步骤1的宿主机端口
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;
}
}
步骤 4:一键申请 HTTPS 免费证书
bash
运行
# 自动申请SSL证书 + 自动配置Nginx
certbot --nginx -d test.songlw.cn
全程回车,Certbot 会自动完成:
✅ 生成证书 ✅ 修正配置 ✅ 自动续期
步骤 5:终极修复!解决服务器重启后 502(必做)
这是 90% 新手踩坑点:Nginx 启动比 Docker 快,导致代理失败。
1. 修改 Nginx 启动配置
bash
运行
nano /lib/systemd/system/nginx.service
2. 优化启动顺序 + 延时等待
在 [Unit] 追加 Docker 依赖,在 [Service] 追加启动延时:
ini
[Unit]
After=network-online.target docker.service # 等Docker启动完成
Requires=docker.service
[Service]
ExecStartPre=/bin/sleep 3 # 等待3秒,让容器完全初始化
3. 刷新系统配置
bash
运行
systemctl daemon-reload
步骤 6:验证服务 + 配置开机自启
bash
运行
# 1. 测试Nginx配置语法(必须显示 successful)
nginx -t
# 2. 重启Nginx生效
systemctl restart nginx
# 3. 设置Nginx开机自启(默认已开启,验证一下)
systemctl enable nginx
# 4. 验证服务访问
curl https://test.songlw.cn
三、最终效果
服务通过
https://test.songlw.cn正常访问服务器重启后自动启动 Docker + 服务 + Nginx
无 502 错误、无端口冲突、无配置报错
全站 HTTPS 加密,自动续期证书
四、常见问题排查
1. 重启服务器 502
→ 原因:Nginx 启动顺序错误
→ 解决:严格按照步骤 5配置 Nginx 延时 + 依赖
2. Nginx 启动失败(端口占用)
bash
运行
# 强制释放80/443端口
pkill -f nginx
3. 配置语法报错
→ 执行 nginx -t 查看报错行,检查标点 / 域名 / 端口
4. Docker 服务未自启
→ 重新执行:docker update --restart=always 容器名
五、总结
新增服务的核心四件套:
Docker 部署 + 自启
域名 DNS 解析
Nginx 反向代理
启动顺序优化(解决 502)
按照本教程操作,可无限复用新增任意服务,彻底规避新手常见坑点!