目录
[一、什么是 Nginx?](#一、什么是 Nginx?)
[二、为什么需要 Nginx?](#二、为什么需要 Nginx?)
[三、Nginx 的核心功能](#三、Nginx 的核心功能)
[1. 静态资源服务](#1. 静态资源服务)
[2. 反向代理](#2. 反向代理)
[3. 负载均衡](#3. 负载均衡)
[4. 动静分离](#4. 动静分离)
[四、Nginx 的工作模型](#四、Nginx 的工作模型)
[五、Nginx 的核心组件](#五、Nginx 的核心组件)
[六、Nginx 请求处理流程](#六、Nginx 请求处理流程)
[七、Nginx 与 Tomcat 的关系](#七、Nginx 与 Tomcat 的关系)
[八、Nginx 与微服务架构](#八、Nginx 与微服务架构)
[九、Nginx 常见配置示例](#九、Nginx 常见配置示例)
[十、Nginx 的典型应用场景](#十、Nginx 的典型应用场景)
在实际的生产环境中,几乎所有对外提供服务的系统,前面都会放一个 Nginx。它是 Web 架构中不可或缺的一环。
一、什么是 Nginx?
Nginx 是一款 高性能的 Web 服务器和反向代理服务器。
一句话概括:
Nginx 是站在最前面的流量入口。
二、为什么需要 Nginx?
如果没有 Nginx,系统通常会面临:
- Tomcat 直接暴露,安全性差
- 静态资源处理效率低
- 高并发下性能不足
- 无法做负载均衡
Nginx 解决的是"流量入口和分发"的问题。
三、Nginx 的核心功能
1. 静态资源服务
- 直接处理 HTML / CSS / JS / 图片
- 减少后端服务器压力
2. 反向代理
客户端不知道真实服务地址:
客户端 → Nginx → Tomcat / Spring Boot
3. 负载均衡
将请求分发到多个后端服务:
- 轮询
- 权重
- IP Hash
4. 动静分离
- 静态资源由 Nginx 处理
- 动态请求转发给后端服务
四、Nginx 的工作模型
事件驱动 + 异步非阻塞
- 单进程 + 多 worker
- 少量线程处理大量连接
- 非常适合高并发场景
这是 Nginx 高性能的根本原因。
五、Nginx 的核心组件
- Master 进程:管理 Worker
- Worker 进程:处理请求
- 事件模型:epoll / kqueue
六、Nginx 请求处理流程
简化流程:
- 客户端发起请求
- Nginx 接收请求
- 匹配 server / location
- 静态资源直接返回
- 动态请求反向代理到后端
- 返回响应
七、Nginx 与 Tomcat 的关系
| 对比 | Nginx | Tomcat |
|---|---|---|
| 定位 | 网关 / 代理 | 应用容器 |
| 并发 | 极高 | 相对较低 |
| 静态资源 | 强 | 一般 |
| 业务逻辑 | 不处理 | 处理 |
二者不是替代关系,而是协作关系。
八、Nginx 与微服务架构
在微服务中,Nginx 通常用于:
- API 网关前置
- 服务聚合入口
- 灰度发布
- 请求限流
九、Nginx 常见配置示例
反向代理
TypeScript
location /api/ {
proxy_pass http://localhost:8080;
}
负载均衡
TypeScript
upstream backend {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
十、Nginx 的典型应用场景
- 网站入口服务器
- 微服务网关前置
- 静态资源服务器
- 流量隔离
Nginx 是整个系统的第一道门,也是最后一道防线。