LinuxWeb服务部署实践_Nginx优化

3次阅读

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

LinuxWeb服务部署实践_Nginx优化

想让 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 和错误率变化。

text=ZqhQzanResources