第六章:Nginx 是什么

6.1 基本介绍

Nginx(读音:engine-x,“引擎 X”),开源的 Web 服务器。

它具体干啥?简单说,三件事:

1. 提供静态文件服务(最常见)

你浏览器访问 https://example.com/index.html,Nginx 就把服务器上的 index.html 文件发给你。

浏览器请求 /index.html
        │
        ▼
    Nginx 监听 80/443 端口
        │
        ▼
   读取文件返回给浏览器

2. 反向代理(Reverse Proxy)

把请求转发到后端的另一个程序。比如:

  • 浏览器访问 /api/xxx → Nginx 转发到后端 Node.js 服务(端口 3000)
  • 浏览器访问 / → Nginx 直接返回前端 HTML

3. 负载均衡(Load Balancing)

如果一个服务有 5 台服务器,Nginx 可以把请求轮流分配给它们,减轻单台压力。

6.2 在 gpt_image_playground 项目里的角色

看 deploy/Dockerfile 和 deploy/nginx.conf:

  1. Vite 构建出静态文件(HTML/JS/CSS)放在 dist/
  2. Docker 镜像里装了 Nginx
  3. Nginx 用配置文件 nginx.conf 监听端口
  4. 用户访问时,Nginx 把 dist/ 里的文件返回出去
  5. 还能做”API 代理”,把 /api-proxy/ 开头的请求转发到 OpenAI

📌 类比:Nginx 是餐厅的”传菜员+迎宾员”——它不做菜(不跑代码),只负责把菜(静态文件)端给客人,或者把客人引到对应的房间(反向代理)。

6.3 同行竞品

名字特点
Nginx高性能、配置简单,最流行
Apache老牌、功能多但配置复杂
Caddy自动 HTTPS,新一代选手
Traefik容器友好,K8s 常用

第七章:容器与容器化部署

7.1 容器是什么

容器(Container)= 隔离的、独立的运行环境。

最直观的类比:集装箱

  • 海运集装箱发明前:货物千奇百怪,装船麻烦、容易损坏
  • 集装箱发明后:所有货物先装进标准集装箱,船、卡车、火车都能直接搬

软件世界的”集装箱”:

  • 容器化前:软件依赖五花八门,部署到不同机器经常出问题(“在我电脑上能跑啊!”)
  • 容器化后:软件 + 依赖打包成集装箱,到哪都能跑

7.2 容器 vs 虚拟机

对比项虚拟机 (VM)容器 (Container)
隔离级别完整操作系统共享主机的内核,只隔离应用
启动速度几十秒~几分钟几秒
占用资源GB 级MB 级
性能开销较大几乎没有
类比一栋独立别墅公寓里的一户人家

7.3 容器化部署的好处

  1. 环境一致:“开发环境能跑,生产环境也能跑”
  2. 快速搬家:一个 docker pull 就能在新机器上跑起来
  3. 资源利用高:一台服务器能跑几十上百个容器
  4. 方便扩展:流量大了?再启动 5 个一样的容器分担
  5. 版本回滚快:出问题了切回旧镜像即可

7.4 容器化部署完整流程

开发阶段:
   写代码 → 写 Dockerfile → docker build → 得到镜像
                                              │
发布阶段:                                     │
   docker push → 把镜像传到镜像仓库(如 Docker Hub)
                                              │
                                              ▼
部署阶段:
   服务器上 docker pull 拉镜像 → docker run 启动容器 → 服务上线
                                              │
                                              ▼
更新阶段:
   改代码 → 重新 build 新镜像 → 新版本号 → push → 服务器 pull → 替换旧容器

7.5 容器生态名词扫盲

名词全称/中文是什么
Docker(专有名词)最流行的容器化工具
Docker Hub-Docker 官方的镜像仓库(类似”应用商店”)
Image镜像静态的、可分发的容器模板
Container容器镜像启动后的实例(在运行的程序)
Dockerfile(专有名词)描述如何构建镜像的文本文件
K8sKubernetes容器编排工具(管理几百上千个容器)
Composedocker-compose一次启动多个相关容器(如 web + 数据库)
Registry镜像仓库存储/分发镜像的服务(Docker Hub、阿里云ACR等)
Layer层镜像由多个只读层叠加而成,可复用以省空间

最后更新:2026-06-02(据 git 提交历史回填,非内容重新审校日期)