Nginx 核心功能
Nginx 是一款开源、高性能、轻量级的 HTTP 服务器、反向代理、负载均衡器、TCP/UDP 代理及邮件代理服务器
一、核心架构
二、HTTP 核心服务功能
1. 静态资源服务(基础能力)
- 高效提供 HTML、CSS、JS、图片、视频等静态文件,支持自动索引(autoindex)、目录浏览、索引文件(index)配置。
- 内置文件描述符缓存(open_file_cache),减少文件打开 / 关闭开销,大幅提升静态资源访问速度。
- 支持 FLV/MP4 视频流式传输,可实现断点续传与范围请求(byte-range)nginx.org。
2. 虚拟主机
- 支持 基于域名(server_name)和 基于 IP 的虚拟主机,单台 Nginx 可同时托管多个独立网站,共享端口与资源。
- 每个虚拟主机独立配置根目录、日志、访问规则、SSL 证书等,实现站点隔离nginx.org。
3. 请求处理与路由
- 基于 location 块实现 URI 精准匹配(前缀、正则、精确匹配),灵活分发请求至不同处理逻辑。
- 内置 rewrite 模块,支持正则表达式实现 URI 重写、重定向(3xx 状态码),适配 URL 规范与业务路由需求nginx.org。
- 支持 HTTP/1.1 长连接(keepalive)、请求流水线(pipelining),减少连接建立开销,提升吞吐nginx.org。
4. 动态请求代
- 支持 FastCGI、uWSGI、SCGI、memcached 等协议,可将动态请求转发至 PHP-FPM、Python(Django/Flask)、Node.js 等后端应用服务器。
- 提供 fastcgi_pass、uwsgi_pass 等指令,实现动态请求的高效转发与参数传递。
三、反向代理
反向代理是 Nginx 最核心的应用场景,作为 “流量入口” 接收客户端请求,转发至后端服务并返回响应,核心功能如下:
四、负载均衡
基于反向代理扩展,实现多后端服务器的流量智能分发,核心功能:
- 轮询(默认):请求依次分发至后端节点。
- 加权轮询(weight):按节点权重分配流量,适配性能差异服务器。
- IP 哈希(ip_hash):同一客户端 IP 始终转发至同一后端,实现会话保持。
- 最少连接(least_conn):将请求分发至当前连接数最少的节点,均衡负载。
- 通用哈希(hash):基于 URI、请求参数等自定义维度哈希分发。
五、安全与访问控制
- IP 黑白名单:通过 allow/deny 指令限制客户端 IP 访问。
- 基础认证:auth_basic 实现 HTTP 账号密码验证。
- 子请求验证:通过 auth_request 对接外部认证服务(如 OAuth、JWT)nginx.org。
- 连接数限制:limit_conn 限制单 IP 并发连接数。
- 请求速率限制:limit_req 限制单 IP 单位时间请求数,防 CC 攻击。
- Referer 验证:valid_referers 防止盗链nginx.org。
六、性能优化功能
七、TCP/UDP 四层代理
除 HTTP 七层代理外,Nginx 支持 TCP/UDP 四层流量转发,核心功能:
八、邮件代理服务
支持 SMTP、POP3、IMAP 邮件协议代理,核心功能:
九、模块化与扩展能力
十、运维与管理功能
十一、核心配置指令
nginx
# 核心配置(nginx.conf)
user www-data;
worker_processes auto; # 自动匹配CPU核心数
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;
events {
worker_connections 1024; # 单Worker最大连接数
use epoll; # Linux高效事件模型
}
http {
include mime.types;
default_type application/octet-stream;
# 日志格式
log_format main '$remote_addr – $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on; # 开启零拷贝
keepalive_timeout 65; # 长连接超时
# 负载均衡后端组
upstream backend {
server 192.168.1.10:8080 weight=3;
server 192.168.1.11:8080;
server 192.168.1.12:8080 backup; # 备用节点
}
# 虚拟主机
server {
listen 80;
server_name example.com;
# 静态资源服务
location /static/ {
root /var/www;
expires 7d; # 缓存7天
}
# 反向代理+负载均衡
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# SSL配置(443端口)
listen 443 ssl;
ssl_certificate /etc/nginx/cert/example.crt;
ssl_certificate_key /etc/nginx/cert/example.key;
ssl_protocols TLSv1.2 TLSv1.3;
}
}





