Nginx简介 #

一、Nginx概述 #

Nginx(发音为"engine-x")是一款轻量级、高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。由俄罗斯程序员Igor Sysoev于2004年首次发布,现已成为全球最流行的Web服务器之一。

Nginx以其高并发、低内存占用、稳定性强而闻名,被广泛应用于高流量网站。根据Netcraft的统计,Nginx已成为全球第二大Web服务器软件。

二、Nginx发展历史 #

2.1 诞生背景 #

2002年,Igor Sysoev开始开发Nginx,目的是解决C10K问题(同时处理10000个客户端连接)。当时的Apache服务器在处理高并发连接时存在性能瓶颈,Nginx应运而生。

2.2 主要版本演进 #

版本 发布年份 重要特性
Nginx 0.1.0 2004 首次公开发布
Nginx 0.6.0 2007 支持Windows平台
Nginx 1.0.0 2011 正式稳定版发布
Nginx 1.2.0 2012 HTTP/1.1代理支持
Nginx 1.4.0 2013 SPDY/3支持
Nginx 1.6.0 2014 增强的代理功能
Nginx 1.8.0 2015 稳定版升级
Nginx 1.10.0 2016 HTTP/2支持
Nginx 1.12.0 2017 动态模块支持
Nginx 1.14.0 2018 TLS 1.3支持
Nginx 1.16.0 2019 长期稳定版
Nginx 1.18.0 2020 新稳定版
Nginx 1.20.0 2021 性能优化
Nginx 1.22.0 2022 安全增强
Nginx 1.24.0 2023 最新稳定版

2.3 商业版本 #

Nginx公司于2011年成立,提供商业版本Nginx Plus,包含更多企业级功能:

  • 主动健康检查
  • 动态配置
  • 会话持久化
  • 高级监控

三、Nginx架构特点 #

3.1 事件驱动架构 #

Nginx采用事件驱动、异步非阻塞的架构,这是其高性能的关键。

text
┌─────────────────────────────────────────┐
│              Master Process              │
│  (管理worker进程、读取配置、平滑升级)      │
└─────────────────┬───────────────────────┘
                  │
    ┌─────────────┼─────────────┐
    │             │             │
    ▼             ▼             ▼
┌────────┐   ┌────────┐   ┌────────┐
│Worker 1│   │Worker 2│   │Worker N│
│(事件循环)│   │(事件循环)│   │(事件循环)│
└────────┘   └────────┘   └────────┘

3.2 进程模型 #

Nginx采用Master-Worker进程模型:

Master进程职责:

  • 读取和验证配置文件
  • 管理Worker进程
  • 平滑重启和升级
  • 不处理客户端请求

Worker进程职责:

  • 处理客户端请求
  • 使用事件循环处理多个连接
  • 单线程、非阻塞

3.3 连接处理机制 #

Nginx使用高效的事件模型:

系统 事件模型
Linux epoll
FreeBSD kqueue
macOS kqueue
Windows select/IOCP

四、Nginx核心优势 #

4.1 高并发处理能力 #

Nginx可以轻松处理数万个并发连接,内存占用极低。

bash
worker_processes auto;
worker_connections 65535;

4.2 低内存消耗 #

每个连接仅占用几KB内存,相比Apache的进程模型,内存效率极高。

4.3 高稳定性 #

Nginx采用分阶段资源分配技术,避免内存泄漏,可长期稳定运行。

4.4 热部署 #

支持不停机更新配置和升级版本:

bash
nginx -s reload
kill -USR2 $(cat /var/run/nginx.pid)

4.5 模块化设计 #

Nginx采用模块化架构,功能可扩展:

模块类型 说明
核心模块 HTTP、Event、Mail
标准模块 Rewrite、Proxy、SSL
第三方模块 Lua、Headers-More

五、Nginx应用场景 #

5.1 静态资源服务器 #

Nginx非常适合提供静态文件服务:

nginx
server {
    listen 80;
    server_name static.example.com;
    
    location / {
        root /var/www/static;
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

5.2 反向代理服务器 #

将请求转发到后端应用服务器:

nginx
server {
    listen 80;
    server_name api.example.com;
    
    location / {
        proxy_pass http://backend_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

5.3 负载均衡器 #

分发请求到多个后端服务器:

nginx
upstream backend_servers {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend_servers;
    }
}

5.4 API网关 #

作为微服务架构的API网关:

nginx
server {
    listen 80;
    
    location /api/user {
        proxy_pass http://user-service:8080;
    }
    
    location /api/order {
        proxy_pass http://order-service:8080;
    }
    
    location /api/product {
        proxy_pass http://product-service:8080;
    }
}

5.5 邮件代理服务器 #

Nginx还可以代理IMAP/POP3/SMTP:

nginx
mail {
    server_name mail.example.com;
    
    imap {
        listen 143;
        proxy_pass mail_backend;
    }
}

六、Nginx vs Apache #

特性 Nginx Apache
架构 事件驱动 进程/线程驱动
并发处理 高(异步非阻塞) 中(同步阻塞)
内存占用
静态文件 极快 较快
动态内容 需代理到后端 原生支持(模块)
配置灵活性
模块加载 需编译 动态加载
.htaccess 不支持 支持
学习曲线 中等 较低

七、知名用户 #

许多知名公司使用Nginx:

  • Netflix:流媒体服务
  • Dropbox:云存储
  • WordPress.com:博客平台
  • GitHub:代码托管
  • Instagram:图片社交
  • 百度:搜索引擎
  • 腾讯:社交平台
  • 淘宝:电商平台

八、Nginx生态系统 #

8.1 OpenResty #

基于Nginx的Web平台,集成Lua脚本支持:

nginx
location /hello {
    content_by_lua_block {
        ngx.say("Hello, OpenResty!")
    }
}

8.2 Tengine #

淘宝开发的Nginx分支,增加了很多高级特性:

  • 动态模块加载
  • 更强的负载均衡
  • 主动健康检查

8.3 Nginx Unit #

Nginx官方的应用服务器,支持多语言:

  • Python
  • PHP
  • Go
  • Node.js
  • Ruby

九、学习路线建议 #

9.1 初级阶段 #

  1. 了解Nginx基本概念
  2. 学会安装和配置
  3. 搭建静态文件服务器
  4. 配置简单的反向代理

9.2 中级阶段 #

  1. 掌握负载均衡配置
  2. 配置SSL/HTTPS
  3. 学习缓存机制
  4. 日志分析和监控

9.3 高级阶段 #

  1. 性能调优
  2. Lua脚本开发
  3. 源码分析
  4. 自定义模块开发

十、总结 #

Nginx是一款强大、高效的Web服务器和反向代理:

  • 高性能:事件驱动架构,轻松处理高并发
  • 低资源:内存占用极低
  • 高可靠:稳定性强,支持热部署
  • 功能丰富:反向代理、负载均衡、缓存等
  • 生态完善:OpenResty、Tengine等衍生项目

准备好开始学习Nginx了吗?让我们进入下一章,学习如何安装Nginx。

最后更新:2026-03-27