中间件速查手册
Web 服务器 · nginx

Nginx

高并发的反向代理与 Web 服务器,流量入口的守门员

Web 服务器BSD-2-ClauseC学习难度:入门

Nginx 站在所有请求的最前面:接住 HTTP 请求,静态文件自己返回,动态请求转发给后端,还能做负载均衡、HTTPS 卸载、限流和缓存。它用事件驱动 + 少量 worker 进程撑住几万并发连接,这是它比 Apache 更省资源的原因。

01

它解决什么问题

后端有 4 台服务,用户不能记 IP;证书不能每台机器都配一遍;静态图片不应该走后端应用。

真实场景:典型场景:用户访问 https://shop.com/api/order,Nginx 终止 HTTPS,按 upstream 轮询转发到 4 台后端;访问 /static/*.png 直接读本地文件返回。

02

核心概念

每个概念一句话 + 一个类比。点击卡片看更详细的解释。

03

数据流转动画

跟着步骤看一条数据从进入系统到被处理完的完整路径,可以暂停、重播和调速。

Flow animation

请求进入 Nginx 后的三种去向

客户端https://shop.comNginxworker / location 匹配静态文件/static/*.png后端 A10.0.0.11:8080后端 B10.0.0.12:8080响应返回gzip / cache

← 左右滑动查看完整流程图 →

01 / 06
1. 连接与 TLS 握手

Nginx 接住 TCP 连接,完成 HTTPS 握手,证书只配在这一层。

提示:静态文件直接返回,动态请求按 upstream 策略转发,HTTPS 在入口统一终止。 悬停图中的节点可以看概念解释。

04

优劣势

短句说清适合什么、不适合什么,选型时先看这一栏。

适合什么
  • 事件驱动,几万并发连接内存占用很小
  • 配置简单,静态资源、反代、HTTPS 开箱可用
  • 负载均衡、限流、缓存、gzip 一站配齐
  • 稳定性极好,跑几年不用重启
不适合什么
  • 动态内容处理弱,必须转发给后端
  • 模块要重新编译才能加(开源版)
  • 配置语法自成一套,rewrite 规则容易写错
  • 复杂的流量治理(熔断、灰度)需要 OpenResty 或网关
05

常见使用场景

每个场景都配一句「为什么用它」。

01

统一入口与 HTTPS

所有域名解析到 Nginx,证书和跳转集中管理。

为什么用它:后端机器不用各自维护证书,扩容也不影响入口。

02

动静分离

静态资源由 Nginx 直接返回,动态请求转发给应用。

为什么用它:减少应用服务器的无谓 IO,提升整体吞吐。

03

灰度与限流

按 header/cookie 分流到不同 upstream,用 limit_req 限速。

为什么用它:不用改代码就能做流量治理。

06

同类对比

和同赛道的组件并排看,差异一目了然。

NginxApache

Nginx 在前做入口,Apache 在后跑应用,是很多存量系统的现实选择。新架构基本只用 Nginx。

打开对比页
07

常见问题

上手第一个月最容易卡住的地方。

Q1和 Apache 有什么区别?

Nginx 是事件驱动 + 少量进程,适合高并发静态和反代;Apache 是每连接一进程/线程(prefork/worker),模块生态和 .htaccess 更灵活。新项目基本都用 Nginx 做入口。

Q2负载均衡有哪些策略?

默认轮询;weight 加权;ip_hash 按客户端 IP 固定;least_conn 最少连接;hash $request_uri 按 URL 哈希;商业版还有一致性哈希。

Q3怎么配置 HTTPS?

listen 443 ssl; ssl_certificate 证书链; ssl_certificate_key 私钥;再配 ssl_protocols TLSv1.2 TLSv1.3,80 端口做 301 跳转。

Q4worker_connections 和 worker_processes 怎么设?

worker_processes 一般等于 CPU 核数,worker_connections 默认 1024,理论上限是两者乘积。真正瓶颈常在文件描述符(worker_rlimit_nofile)和 upstream 的响应时间。