
下面是各层的核心要点:
Nginx(反向代理层) :暴露在公网,监听 80/443 端口。负责 SSL 终止、直接服务静态文件(/static/、/media/),以及将动态请求通过 Unix Domain Socket(或 TCP 端口)转发给 Gunicorn,同时可配置限流和负载均衡。
Gunicorn(WSGI 服务器层) :运行在内网,由一个 Master 进程 fork 出多个 Worker 进程(通常配置为 2×CPU核数 + 1)。每个 Worker 是独立的 Python 进程,处理一个并发请求。Master 负责监控 Worker 存活和优雅重启。
Python WSGI 应用层 :Flask / Django / FastAPI(配合 uvicorn 则是 ASGI)。Gunicorn 按照 PEP 3333 规范调用应用的 __call__ 入口,传入 environ 和 start_response,应用返回响应体迭代器。
数据层:应用通过 ORM(SQLAlchemy、Django ORM)访问关系型数据库,通过 redis-py 访问缓存/队列,通过 boto3 等 SDK 访问对象存储。
典型进程通信方式对比:
| 方式 | 延迟 | 适用场景 |
|---|---|---|
| Unix Socket | 最低 | Nginx 与 Gunicorn 在同一机器 |
TCP 127.0.0.1:8000 |
略高 | 容器间通信或跨机部署 |
Systemd 管理建议 :Nginx 和 Gunicorn 各自独立注册为 systemd service,通过 socket activation 可以实现零停机重启。