Nginx配置介绍
以下是一个Nginx配置介绍,整合了主流场景的核心配置和优化技巧,按功能模块分类展示:
一、基础架构配置
# 全局配置(主进程参数)
user nginx; # 运行用户
worker_processes auto; # 工作进程数(推荐设为CPU核数)
error_log /var/log/nginx/error.log warn; # 错误日志路径及级别
pid /var/run/nginx.pid; # PID文件位置
# 事件模型配置
events {
worker_connections 10240; # 单进程最大连接数
use epoll; # Linux系统高性能I/O模型
multi_accept on; # 同时接收多个新连接
}
二、HTTP核心模块
http {
include /etc/nginx/mime.types; # MIME类型映射
default_type application/octet-stream;
sendfile on; # 启用高效文件传输
tcp_nopush on; # 优化数据包发送
keepalive_timeout 65; # 长连接超时时间
# 日志格式
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;
}
三、虚拟主机配置
1. 静态资源服务
server {
listen 80;
server_name static.example.com;
root /var/www/static; # 资源根目录
location / {
index index.html;
try_files $uri $uri/ =404; # 文件查找规则
}
# 图片/CSS/JS缓存优化
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d; # 缓存30天
access_log off; # 关闭访问日志
}
}
2. 反向代理配置
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://backend_server; # 后端服务地址
proxy_set_header Host $host; # 传递原始域名
proxy_set_header X-Real-IP $remote_addr; # 客户端真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
upstream backend_server {
server 192.168.1.100:8080 weight=5; # 权重轮询
server 192.168.1.101:8080 max_fails=3; # 失败重试策略
}
四、高级功能配置
1. SSL/TLS加密
server {
listen 443 ssl;
server_name secure.example.com;
ssl_certificate /etc/nginx/ssl/fullchain.pem; # 证书路径
ssl_certificate_key /etc/nginx/ssl/privkey.key;
# 加密协议优化
ssl_protocols TLSv1.2 TLSv1.3; # 禁用老旧协议
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on; # 优先服务端加密套件
}
2. 负载均衡策略
upstream app_cluster {
least_conn; # 最少连接算法
server 10.0.0.1:8000 weight=3; # 权重设置
server 10.0.0.2:8000;
server 10.0.0.3:8000 backup; # 备用服务器
}
3. 缓存加速
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;
location / {
proxy_cache my_cache; # 启用缓存区
proxy_cache_valid 200 302 60m; # 成功响应缓存60分钟
proxy_cache_use_stale error timeout; # 故障时使用旧缓存
}
五、安全与优化
1. 请求限制
# 限制单IP每秒10个请求
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
location /api/ {
limit_req zone=req_limit burst=20; # 突发流量限制
deny 192.168.1.100; # IP黑名单
}
2. Gzip压缩
gzip on; # 启用压缩
gzip_comp_level 6; # 压缩级别(1-9)
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1k; # 最小压缩文件大小
六、特殊场景配置
1. WebSocket支持
location /ws/ {
proxy_pass http://websocket_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # 协议升级头
proxy_set_header Connection "upgrade";
}
2. 单页应用路由
location / {
try_files $uri $uri/ /index.html; # 解决Vue/React路由404问题
}
七、调试与维护
# 配置文件检查
nginx -t # 语法校验
# 服务重载
systemctl reload nginx # 平滑重载配置
配置说明文档
- 全局配置:定义进程数、日志等基础参数
- 虚拟主机(Server):通过不同域名/端口隔离服务
- 位置块(Location):URI路径匹配规则,支持正则表达式
- Upstream模块:定义后端服务器集群,支持健康检查
- 缓存策略:通过proxy_cache实现内容加速
完整配置示例:可参考官方文档或各技术博客的深度解析。