使用Docker在腾讯云轻量服务器上部署Nginx的方法?

在腾讯云轻量应用服务器(Lighthouse)上部署 Nginx,使用 Docker 是最推荐的方式。相比直接安装 Nginx 二进制包,Docker 提供了环境隔离、版本管理方便、迁移成本低以及配置与镜像解耦等优势。

以下是基于 Ubuntu/Debian 或 CentOS/RHEL 系统(腾讯云轻量默认常见镜像)的标准操作流程。整个过程分为:准备环境、拉取镜像、运行容器、配置反向X_X/静态资源、开放端口五个步骤。


第一步:登录服务器并检查环境

通过 SSH 连接到你的腾讯云轻量服务器。

ssh root@<你的服务器IP>

确保系统更新到最新状态(可选,但推荐):

# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y

# CentOS/RHEL
sudo yum update -y

第二步:安装 Docker 和 Docker Compose

腾讯云轻量服务器通常没有预装 Docker,需要手动安装。推荐使用官方脚本一键安装,或使用包管理器安装稳定版。

方法 A:使用官方安装脚本(最简单)

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

注意:国内用户建议使用阿里云镜像源提速下载,避免超时。上述命令中 --mirror Aliyun 即指定了阿里云镜像。

方法 B:手动安装(更可控)

以 Ubuntu 为例:

sudo apt install -y docker.io docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker

验证安装是否成功:

docker --version
docker compose version

第三步:创建项目目录结构

为了便于管理,建议将 Nginx 的配置、日志、静态文件分离存放。

mkdir -p ~/nginx-project/{conf,html,logs}
cd ~/nginx-project
  • conf/:存放 nginx.conf 配置文件
  • html/:存放前端静态文件(index.html 等)
  • logs/:存放访问日志和错误日志

第四步:编写 Nginx 配置文件

进入 conf 目录,创建 nginx.conf:

nano conf/nginx.conf

粘贴以下基础配置(可根据需求修改):

worker_processes auto;

events {
    worker_connections 1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    error_log   /var/log/nginx/error.log warn;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost; # 可改为你的域名

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

关键点:Nginx 容器内默认的工作目录是 /usr/share/nginx/html,日志路径是 /var/log/nginx/。我们需要通过 -v 挂载宿主机目录来映射这些路径。


第五步:放置静态文件(可选测试页)

在 html 目录下创建一个简单的测试页面:

echo "<h1>Hello from Docker Nginx on Tencent Cloud</h1>" > html/index.html

第六步:启动 Nginx 容器

使用 docker run 命令启动容器,关键参数说明如下:

docker run -d 
  --name my-nginx 
  --restart=always 
  -p 80:80 
  -v $(pwd)/conf/nginx.conf:/etc/nginx/nginx.conf:ro 
  -v $(pwd)/html:/usr/share/nginx/html 
  -v $(pwd)/logs:/var/log/nginx 
  nginx:latest

参数解析:

  • -d:后台运行
  • --name my-nginx:容器名称
  • --restart=always:开机自启(重要,防止服务器重启后服务丢失)
  • -p 80:80:将宿主机的 80 端口映射到容器的 80 端口
  • -v ...:ro:只读挂载配置文件,防止容器内误改
  • -v ...:挂载 HTML 文件和日志目录

第七步:腾讯云控制台防火墙设置(关键!)

很多新手在此处失败,因为 Docker 内部防火墙已放行,但腾讯云轻量应用服务器的安全组未放行 80 端口。

  1. 登录 腾讯云控制台
  2. 进入 轻量应用服务器 -> 选择你的实例
  3. 点击 防火墙 标签页
  4. 添加规则:
    • 方向:入方向
    • 协议类型:TCP
    • 端口范围:80
    • 授权对象:0.0.0.0/0
    • 策略:允许

⚠️ 如果你后续要启用 HTTPS(443 端口),也需在此处放行 443 端口。


第八步:验证部署

打开浏览器,访问 http://<你的服务器IP>,应看到 “Hello from Docker Nginx on Tencent Cloud” 页面。

也可通过命令行验证:

curl http://localhost

进阶优化建议

1. 使用 Docker Compose 管理(推荐生产环境)

随着项目复杂化(如增加 PHP-FPM、MySQL、SSL 证书等),单条 docker run 难以维护。建议使用 docker-compose.yml。

在项目根目录创建 docker-compose.yml:

version: '3'
services:
  nginx:
    image: nginx:latest
    container_name: my-nginx
    restart: always
    ports:
      - "80:80"
    volumes:
      - ./conf/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./html:/usr/share/nginx/html
      - ./logs:/var/log/nginx
    networks:
      - webnet

networks:
  webnet:
    driver: bridge

然后执行:

docker compose up -d

2. 配置 HTTPS(Let’s Encrypt + Certbot)

若需支持 HTTPS,可额外运行一个 certbot 容器获取证书,并将证书挂载到 Nginx 容器中。

3. 性能调优

腾讯云轻量服务器配置有限,建议在 nginx.conf 中调整:

worker_processes auto;  # 自动匹配 CPU 核心数
worker_rlimit_nofile 65535;

并在系统层面调整文件描述符限制:

# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

常见问题排查

问题 可能原因 解决方案
访问 IP 显示 “Connection refused” 腾讯云防火墙未放行 80 端口 去控制台防火墙添加 TCP 80 入站规则
显示 “Welcome to nginx!” 默认页 挂载的 html 目录为空或路径错误 检查 $(pwd)/html 下是否有 index.html,且权限正确
容器启动后立即退出 配置文件语法错误 查看日志:docker logs my-nginx
无法写入日志文件 权限不足 确保宿主机 logs 目录有写权限,或 chmod 777 测试

总结

在腾讯云轻量服务器上部署 Nginx via Docker 的核心流程是:

  1. 安装 Docker(推荐阿里云镜像源)
  2. 规划目录结构(conf/html/logs)
  3. 编写 nginx.conf
  4. 运行容器并映射端口
  5. 务必在腾讯云控制台防火墙放行 80 端口

这种方式具备高可移植性,未来如需迁移至其他云厂商或本地服务器,只需复制整个 nginx-project 目录即可无缝切换。

未经允许不得转载:CLOUD云枢 » 使用Docker在腾讯云轻量服务器上部署Nginx的方法?