你提供的 Nginx 配置是一个基础且规范的默认配置,针对生产环境仍有不少优化空间。以下从性能、安全性、稳定性三个维度给出具体优化建议:
一、性能优化
1. 工作进程与连接数
nginx
worker_processes auto; # 保持auto(自动匹配CPU核心数)
worker_cpu_affinity auto; # 新增:绑定进程到CPU核心,减少切换开销
worker_rlimit_nofile 65535; # 新增:提高进程文件描述符限制
events {
worker_connections 10240; # 提高连接数(默认768偏小,根据服务器内存调整)
multi_accept on; # 开启:一次接受所有新连接
use epoll; # 新增:Linux下使用epoll模型(高效I/O多路复用)
}
2. HTTP 传输优化
nginx
http {
# 新增:TCP优化
tcp_nodelay on; # 小数据包不延迟发送(适合交互场景)
keepalive_timeout 65 60; # 客户端连接保持超时(服务器65s,响应头告知客户端60s)
keepalive_requests 1000; # 单个长连接最大请求数(默认100,提高减少握手开销)
# 新增:压缩优化
gzip on;
gzip_min_length 1k; # 小于1k不压缩(避免反优化)
gzip_buffers 16 8k; # 保持不变
gzip_comp_level 5; # 压缩等级从6降为5(平衡CPU与带宽)
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon; # 补充字体、图片等类型
gzip_proxied expired no-cache no-store private auth; # 细化代理场景压缩规则
# 新增:缓存优化(静态资源)
open_file_cache max=10000 inactive=20s; # 缓存文件描述符
open_file_cache_valid 30s; # 缓存验证时间
open_file_cache_min_uses 2; # 最少使用2次才缓存
open_file_cache_errors on; # 缓存错误信息
}
二、安全性优化
1. 隐藏敏感信息
nginx
http {
server_tokens off; # 关闭响应头中的Nginx版本号(默认注释,建议开启)
proxy_hide_header X-Powered-By; # 隐藏后端服务版本(如PHP/Java)
add_header X-Content-Type-Options "nosniff"; # 新增:防止MIME类型嗅探
add_header X-Frame-Options "SAMEORIGIN"; # 新增:限制iframe嵌套(仅同源)
add_header X-XSS-Protection "1; mode=block"; # 新增:开启浏览器XSS过滤
}
2. SSL/TLS 强化(若使用 HTTPS)
nginx
http {
ssl_protocols TLSv1.2 TLSv1.3; # 移除TLSv1、TLSv1.1(已不安全)
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; # 现代加密套件(优先GCM/CHACHA20)
ssl_prefer_server_ciphers on; # 保持不变
ssl_session_cache shared:SSL:10m; # 新增:SSL会话缓存(10MB约40000会话)
ssl_session_timeout 1d; # 新增:会话超时时间(1天)
ssl_stapling on; # 新增:开启OCSP stapling(减少SSL握手时间)
ssl_stapling_verify on; # 新增:验证OCSP响应
}
三、稳定性与兼容性优化
1. 限制请求与防攻击
nginx
http {
# 新增:限制请求速率(防DoS)
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s; # 单个IP每秒10请求
limit_req zone=req_limit burst=20 nodelay; # 突发允许20个请求,不延迟处理
# 新增:限制并发连接(防CC攻击)
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
limit_conn conn_limit 100; # 单个IP最大100并发连接
# 新增:超时设置(避免连接挂起)
client_body_timeout 10s; # 客户端发送请求体超时
client_header_timeout 10s; # 客户端发送请求头超时
send_timeout 10s; # 向客户端发送响应超时
}
2. 其他实用配置
nginx
http {
# 新增:字符集(避免乱码)
charset utf-8;
# 新增:代理缓冲区(反向代理场景)
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
# 保持:client_max_body_size 64m;(根据业务需求调整,如文件上传场景可增大)
}

四、总结优化项
类别 | 关键优化点 |
---|---|
性能 | 提高连接数、开启 epoll、优化压缩等级、增加长连接配置 |
安全性 | 隐藏版本号、强化 SSL 协议与加密套件、添加安全响应头、限制请求速率 |
稳定性 | 增加超时设置、限制并发连接、优化文件描述符限制 |
兼容性 | 补充字符集、配置代理缓冲区、细化缓存规则 |
优化后建议通过 nginx -t
验证配置有效性,并结合实际业务场景(如静态资源服务、反向代理、高并发 API 等)进一步调整参数(例如静态资源可增加 expires
缓存头)。
个人微信:ssevening