保姆级教程:Linux 服务器新增 Docker 服务 + Nginx 代理(解决重启 502 / 开机自启)

_

文基于 Nginx + Docker 环境,以新增 test 服务为例,包含服务部署、域名解析、HTTPS 配置、开机自启、重启 502 终极修复全流程,无任何隐藏坑点,适用于个人博客、API 服务、Web 应用等场景。

一、前置环境

  • 云服务器(CentOS/Debian/Ubuntu)

  • 已安装:DockerNginxCertbot(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:

表格

主机记录

记录类型

记录值

test

A

你的服务器 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

三、最终效果

  1. 服务通过 https://test.songlw.cn 正常访问

  2. 服务器重启后自动启动 Docker + 服务 + Nginx

  3. 无 502 错误、无端口冲突、无配置报错

  4. 全站 HTTPS 加密,自动续期证书


四、常见问题排查

1. 重启服务器 502

→ 原因:Nginx 启动顺序错误

→ 解决:严格按照步骤 5配置 Nginx 延时 + 依赖

2. Nginx 启动失败(端口占用)

bash

运行

# 强制释放80/443端口
pkill -f nginx

3. 配置语法报错

→ 执行 nginx -t 查看报错行,检查标点 / 域名 / 端口

4. Docker 服务未自启

→ 重新执行:docker update --restart=always 容器名


五、总结

新增服务的核心四件套

  1. Docker 部署 + 自启

  2. 域名 DNS 解析

  3. Nginx 反向代理

  4. 启动顺序优化(解决 502)

按照本教程操作,可无限复用新增任意服务,彻底规避新手常见坑点!

Windows 部署 Codex 全流程(2026 最新版) 2026-03-24

评论区