Skip to content
🗂️ 文章分类: 服务器  
🏷️ 文章标签: Nginx  
📝 文章创建时间: 2024-09-18
🔥 文章最后更新时间:2026-02-07

[toc]

Nginx容器笔记

前言

Nginx是一个高性能的Web服务器和反向代理服务器,常用于负载均衡、缓存、SSL终止等场景。

本笔记记录了在Docker容器中部署Nginx的步骤。

Nginx部署的使用场景

Nginx本身的作用是作为Web服务器和反向代理服务器。它既能直接部署在服务器上,也可以部署在Docker容器中。

选择要点:

  • 单机部署:胜在「轻量、低门槛、系统集成度高」,适合个人单项目、资源紧张、不懂 Docker 的场景;
  • 容器部署:胜在「隔离性、一致性、易管理」,适合多项目、企业级、容器化架构、需快速迁移的场景;

单机部署 Nginx 使用场景

适合这些场景

  • 个人极简场景:单服务器、单项目(如仅部署一个 UniApp H5 页面 + FastAPI 接口),服务器资源紧张(如 1 核 1G 低配云服务器);
  • 运维成本优先:不熟悉 Docker,只想快速部署,且短期内不会换服务器 / 迁移;
  • 系统深度集成:需 Nginx 和系统级工具强联动(如系统自带的日志采集、定时脚本修改 Nginx 配置);
  • 临时测试 / 小流量站点:部署后几乎无需改动,且对环境一致性无要求(如个人博客、测试页面)。

不适合这些场景

  • 多项目 / 多版本 Nginx 共存(如同时部署 5 个个人项目,需不同配置);
  • 需快速迁移 / 扩缩容(如换服务器、新增节点);
  • 团队协作(多人修改配置易冲突)。

注意事项

建议每个项目单独建配置文件(如 proj1.conf/proj2.conf),避免单文件过大难维护。

容器化部署 Nginx 使用场景

适合这些场景

  • 多项目管理:容器化 Nginx 可统一代理所有项目,且和后端服务/数据库等容器在同一网络,无需手动配置 IP;
  • 环境一致性要求高:开发/测试/生产环境需完全一致(如本地 Docker 测试 Nginx 配置,直接同步到远程服务器);
  • 快速部署/迁移:频繁换服务器、或需在多节点部署(如企业集群),镜像 +docker-compose.yml 一键迁移;
  • 微服务/容器化架构:后端、数据库、前端都已容器化,Nginx 作为容器集群的统一入口,联动更便捷;
  • 企业级多团队协作:不同团队管理不同项目,容器隔离可避免配置冲突、权限混乱;
  • 多版本/多实例需求:需同时运行不同版本的 Nginx(如测试新版 Nginx 特性,不影响生产)。

不适合这些场景

  • 服务器资源极度紧缺(如 1 核 512M 服务器,需极致节省内存);
  • 运维人员完全不懂 Docker,且无学习成本(短期可先用单机,后期迁移)。

注意事项

  • 必须通过 -v 挂载配置/静态文件/日志目录(否则容器内修改重启后丢失);
  • Nginx 容器需和后端容器在同一网络中,否则无法通过容器名访问;
  • 更新Nginx配置需进入Nginx容器中执行;

Nginx 容器部署

Nginx容器中的这几个文件和目录都需要挂载到宿主机中,以便后续修改和查看。

  • /etc/nginx/nginx.conf 文件 是Nginx 的主配置文件
  • /etc/nginx/conf.d 目录 是Nginx 次配置文件所在的目录(如 xxx.conf)
  • /var/log/nginx 目录 是Nginx 日志目录
  • /usr/share/nginx/html 目录 是是Nginx 静态页面目录

① 先在宿主机中创建目录,用于存放Nginx容器的配置文件和目录。

sh
# 该目录用于存储Nginx容器中的配置文件、网页目录、日志目录等。
mkdir /shuyx/docker/nginx

② 创建一个临时的Nginx容器,用于复制默认配置文件和目录到指定目录中。没有这些文件,后续部署的新的ginx容器就无法正常运行。

shell
# 临时Nginx容器,复制默认配置
docker run --name temp-nginx -d nginx:stable

# 复制临时Nginx容器的主配置文件到宿主机的/shuyx/docker/nginx/conf/目录
docker cp temp-nginx:/etc/nginx/nginx.conf /shuyx/docker/nginx/conf/  
# 复制其他配置目录
docker cp temp-nginx:/etc/nginx/conf.d/ /shuyx/docker/nginx/conf.d/   
# 复制静态页面目录
docker cp temp-nginx:/usr/share/nginx/html /shuyx/docker/nginx/html/ 
# 复制日志目录   
docker cp temp-nginx:/var/log/nginx /shuyx/docker/nginx/logs/            

# 停止并删除临时Nginx容器
docker stop temp-nginx && docker rm temp-nginx

③ 创建并运行Nginx容器

普通写法

sh
# 创建并后台启动nginx容器
# --name myNginx 容器名称为myNginx
# -p 80:80 主机的80端口映射到Nginx容器的80端口。
# -p 443:443 主机的443端口映射到Nginx容器的443端口。
# -d 后台运行,默认不会进入容器
# nginx:stable 镜像名,指定生成该容器的镜像

docker run -d --name myNginx -p 80:80 -p 443:443 -v /shuyx/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /shuyx/docker/nginx/conf.d:/etc/nginx/conf.d -v /shuyx/docker/nginx/logs:/var/log/nginx -v /shuyx/docker/nginx/html:/usr/share/nginx/html -e TZ=Asia/Shanghai nginx:stable

# 进入到nginx容器的终端中
docker exec -it myNginx /bin/bash

# 查询所有容器
docker ps

80端口是HTTP默认端口,443端口是HTTPS默认端口。

docker-compose.yml文件的写法

yml
services:
  # 容器名称为nginx-service
  nginx-service:
    image: nginx:stable
    ports:
       - "80:80"
       - "443:443"
    volumes:
      - /shuyx/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /shuyx/docker/nginx/conf.d:/etc/nginx/conf.d
      - /shuyx/docker/nginx/html:/usr/share/nginx/html
      - /shuyx/docker/nginx/logs:/var/log/nginx
    environment:
      - TZ=Asia/Shanghai

然后在服务器的docker-compose.yml文件同目录中执行 docker-compose up -d 命令,即可启动Nginx容器。

④ 访问nginx首页 http://ip地址http://ip地址:80https://ip地址https://ip地址:443

若如图所示,则表示Nginx容器部署成功。 nginx_20240918155812.png

如果是在云服务器上部署Nginx容器,记得在云服务器的防火墙上开通对应端口。