🚀 Nginx 核心功能与架构
⚡ 高性能架构
- 事件驱动模型 - 采用 epoll/kqueue 机制,单进程可处理数万并发连接
- 异步非阻塞 - 零拷贝技术(sendfile),减少内核态与用户态切换
- 低内存占用 - 10,000 个非活动 HTTP 连接仅占用约 2.5MB 内存
- 高并发处理 - 单台服务器可轻松处理 5 万+ 并发连接
🔄 反向代理
- 负载均衡 - 支持轮询、最少连接、IP哈希、加权等多种算法
- 健康检查 - 自动检测后端服务器状态,剔除故障节点
- 会话保持 - IP哈希实现基于客户端IP的会话粘性
- 动态权重调整 - 根据服务器性能动态调整权重分配
🔐 安全特性
- SSL/TLS 终止 - 支持 HTTP/2、TLS 1.3,高性能 HTTPS 加速
- 访问控制 - IP 白/黑名单、基本认证、基于地理位置的访问限制
- 防 DDoS - 连接限流(limit_req)、速率限制(limit_conn)
- 请求过滤 - 支持自定义过滤规则,阻止恶意请求
📦 静态资源服务
- 高效缓存 - 支持 expires、cache-control 头部设置
- 静态文件压缩 - gzip/brotli 压缩,节省带宽
- 范围请求 - 支持断点续传,视频流媒体服务
- Sendfile 零拷贝 - 直接内核态文件传输,CPU 使用率极低
🌐 虚拟主机
- 基于域名 - server_name 指令支持多域名绑定
- 基于端口 - 监听不同端口,实现多服务部署
- 基于 IP - 支持多网卡、多 IP 地址配置
- 通配符匹配 - 支持泛域名和正则表达式匹配
🎯 负载均衡策略
- 轮询(Round Robin) - 默认策略,按顺序分发请求
- 最少连接(Least Connections) - 分发到连接数最少的服务器
- IP哈希(IP Hash) - 基于客户端IP哈希,同一IP固定访问同一后端
- 加权轮询 - 根据服务器性能分配不同权重
🏗️ 核心模块体系
核心模块
ngx_http_core_module - HTTP 核心功能
ngx_event_module - 事件处理机制
ngx_mail_module - 邮件代理功能
ngx_stream_module - TCP/UDP 代理
HTTP 处理模块
ngx_http_proxy_module - HTTP 反向代理
ngx_http_upstream_module - 上游服务器管理
ngx_http_ssl_module - SSL/TLS 支持
ngx_http_gzip_module - 压缩模块
第三方模块
ngx_http_lua_module - Lua 脚本支持
ngx_cache_purge - 缓存清除
ngx_http_substitutions - 内容替换
nginx-rtmp-module - 流媒体服务
# RTMP 流媒体配置示例
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
hls on;
hls_path /tmp/hls;
hls_fragment 3;
}
application vod {
play /var/videos;
}
}
}
# HLS 点播配置
server {
listen 8080;
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
}