目录
一、Nginx 简介
二、核心功能详解
三、关键指令解析
四、性能优化要点
五、常见应用场景
一、Nginx 简介
- 定位
- 高性能的 HTTP/反向代理服务器,同时支持邮件协议代理(IMAP/POP3/SMTP)。
- 采用 事件驱动、异步非阻塞 架构,支持高并发(单机可处理数万到百万级并发连接)。
- 内存占用低,配置文件简洁,模块化设计。
- 核心优势
- 轻量级:相比 Apache,资源消耗更低。
- 高扩展性:通过模块化设计支持动态扩展功能。
- 热部署:支持不停止服务更新配置、升级版本。
二、核心功能详解
1. 静态资源服务器(Web Server)
- 功能:直接托管 HTML、CSS、JS、图片等静态文件。
- 配置示例:
server {
listen 80;
server_name example.com;
root /var/www/html; # 静态文件根目录
location / {
index index.html;
}
# 压缩优化
gzip on;
gzip_types text/plain application/json text/css;
}
2. 反向代理(Reverse Proxy)
- 功能:将客户端请求转发到后端服务器,隐藏真实服务端信息。
- 典型场景:负载均衡、安全隔离、SSL 终止。
- 配置示例:
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;
}
}
3. 负载均衡(Load Balancing)
- 支持算法:
- round-robin(默认,轮询)
- least_conn(最小连接数)
- ip_hash(基于客户端 IP 哈希分配)
- weight(权重分配)
- 配置示例:
upstream backend_servers {
ip_hash; # 会话保持
server 192.168.1.101:8080 weight=3;
server 192.168.1.102:8080;
server 192.168.1.103:8080 backup; # 备用服务器
}
4. SSL/TLS 终止
- 功能:处理 HTTPS 加密通信,减轻后端服务器压力。
- 配置示例:
server {
listen 443 ssl;
server_name secure.example.com;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://backend_servers;
}
}
5. 动静分离
- 功能:将动态请求(如 PHP、Java)和静态资源(如图片、CSS)分开处理。
- 配置示例:
server {
location /static/ {
alias /data/static/; # 静态资源目录
expires 30d; # 缓存控制
}
location / {
proxy_pass http://app_server; # 动态请求转发
}
}
6. 虚拟主机(Virtual Host)
- 功能:单机托管多个域名/网站。
- 配置示例:
server {
listen 80;
server_name site1.com;
root /var/www/site1;
}
server {
listen 80;
server_name site2.com;
root /var/www/site2;
}
7. 访问控制
- 功能:基于 IP、用户认证限制访问。
- 配置示例:
location /admin/ {
allow 192.168.1.0/24; # 允许特定 IP 段
deny all; # 拒绝其他 IP
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd; # 用户认证
}
8. 日志管理
- 功能:记录访问日志和错误日志。
- 配置示例:
http {
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;
error_log /var/log/nginx/error.log warn;
}
9. 缓存加速
- 功能:缓存后端响应,减少重复请求。
- 配置示例:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
server {
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 302 10m; # 缓存有效时间
}
}
10. 热部署与平滑重启
- 热部署:
nginx -s reload # 重新加载配置(不中断服务)
- 版本升级:
替换二进制文件后通过 kill -USR2 <master_pid> 实现无缝升级。
三、关键指令解析
- worker_processes:设置工作进程数(通常等于 CPU 核心数)。
- events { worker_connections 1024; }:单个工作进程的最大连接数。
- keepalive_timeout:长连接超时时间。
- client_max_body_size:限制客户端请求体大小(如文件上传)。
四、性能优化要点
- 启用 Gzip 压缩:减少传输数据量。
- 调整缓冲区:避免频繁磁盘 I/O。
- 使用 HTTP/2:提升多请求并发效率。
- 限制并发连接:防止资源耗尽(如 limit_conn 模块)。
五、常见应用场景
- Web 服务器(替代 Apache)
- API 网关
- CDN 边缘节点
- 微服务入口(Kubernetes Ingress)
- 安全防护层(如限制 DDoS 攻击)