nginx生产环境需调优配置与保障运行:worker设为auto,worker_connections调至4096–8192,keepalive_timeout设30–60秒并配keepalive_requests 1000,client_max_body_size按需显式设置;静态资源配置expires 1y及gzip压缩。

想让 Nginx 在 Linux 上跑得稳、快、扛得住流量,光装上就完事远远不够——关键在配置调优和运行保障。
核心配置优化:从 worker 到连接管理
Nginx 默认配置面向通用场景,生产环境需按服务器资源和业务特征调整:
-
worker 进程数:设为
auto(自动匹配 CPU 核心数),避免过多进程争抢调度;单核机器可固定为 1 - worker_connections:每个 worker 最大并发连接数,默认 512,建议调至 4096–8192(需同步提升系统级文件句柄限制)
-
keepalive_timeout:设为 30–60 秒,平衡复用效率与连接占用;搭配
keepalive_requests 1000控制单连接请求数,防长连接耗尽资源 -
client_max_body_size:上传类服务务必显式设置(如
20m),避免默认 1MB 导致大文件请求直接 413 错误
静态资源加速:缓存与压缩双管齐下
图片、JS、CSS 等静态内容是 HTTP 流量主力,合理缓存能大幅降低后端压力:
- 对常见静态后缀(
.js .css .png .jpg .woff2)配置expires 1y,强制浏览器长期缓存 - 启用 Gzip 压缩:
gzip on+gzip_types text/plain text/css application/javascript image/svg+xml,压缩率通常达 60%–70% - 小文件(gzip_min_length 1k),避免压缩开销反超收益
安全与健壮性加固
线上服务不能只顾性能,还要防滥用、防暴露、防雪崩:
- 隐藏版本号:
server_tokens off,减少攻击面 - 限制请求频率:
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s,再在 location 中limit_req burst=20 nodelay防刷 - 禁止敏感路径访问:
location ~ ^/(.git|\.ht|config|logs) { deny all; } - 后端代理时加
proxy_next_upstream error timeout http_500 http_502 http_503,自动故障转移
监控与热更新:不重启也能调配置
运维中频繁改配置不能总 reload 全局,更不能停服:
- 用
nginx -t检查语法,确认无误再nginx -s reload平滑重载 - 开启 stub_status 模块(编译时加
--with-http_stub_status_module),通过location /nginx_status { stub_status; }查实时连接数、请求速率 - 配合
log_format自定义日志,记录响应时间($request_time)、上游耗时($upstream_response_time),定位慢请求根源
不复杂但容易忽略。调完别忘压测验证,比如用 ab -n 10000 -c 200 http://your-site/ 看 QPS 和错误率变化。










