题目
Nginx配置优化与安全加固
信息
- 类型:问答
- 难度:⭐⭐
考点
配置优化,安全加固,负载均衡策略
快速回答
优化Nginx配置的关键点:
- 工作进程优化:设置 worker_processes auto; 匹配CPU核心数
- 连接数控制:worker_connections 根据系统资源调整
- 缓冲区优化:调整 client_body_buffer_size, client_header_buffer_size 等
- 安全加固:禁用 server_tokens,设置安全头部,限制访问方法
- 负载均衡策略:合理选择轮询/权重/IP哈希等算法
1. 核心优化配置
原理说明:通过调整进程模型和连接参数充分利用硬件资源,减少磁盘I/O操作。
代码示例:
# 主配置文件 nginx.conf
worker_processes auto; # 自动匹配CPU核心数
events {
worker_connections 10240; # 单进程最大连接数
use epoll; # Linux高性能事件模型
}
http {
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m; # 文件上传大小限制
large_client_header_buffers 4 8k;
# 静态文件缓存
open_file_cache max=2000 inactive=20s;
open_file_cache_valid 60s;
}2. 安全加固措施
最佳实践:
- 隐藏版本信息:server_tokens off;
- 设置安全头部:add_header X-Frame-Options "SAMEORIGIN";
- 方法限制:if ($request_method !~ ^(GET|POST)$ ) { return 444; }
- 访问控制:deny 192.168.1.100; allow 192.168.1.0/24;
安全配置示例:
server {
server_tokens off;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
location /admin {
allow 192.168.1.0/24;
deny all;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/htpasswd;
}
}3. 负载均衡策略
策略对比:
| 策略 | 指令 | 适用场景 |
|---|---|---|
| 轮询(默认) | 默认 | 服务器性能均衡 |
| 加权轮询 | server backend1 weight=5; | 服务器性能差异 |
| IP哈希 | ip_hash; | 会话保持需求 |
| 最少连接 | least_conn; | 长连接服务 |
配置示例:
upstream backend {
least_conn; # 最少连接策略
server backend1:80 weight=3;
server backend2:80;
server backup:8080 backup; # 备用服务器
}
server {
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
}
}4. 常见错误
- 缓冲区过大:导致内存溢出(OOM)
- 未限制上传大小:client_max_body_size 未设置引发DDoS风险
- 错误使用if:在location中过度使用if影响性能
- 日志未轮转:未配置logrotate导致磁盘占满
5. 扩展知识
- 动态模块:通过 load_module 加载第三方模块(如GeoIP)
- HTTP/2优化:listen 443 ssl http2; 开启HTTP/2协议
- 缓存加速:proxy_cache_path 配置反向代理缓存
- 性能监控:启用stub_status模块获取实时状态