Linux LNMP如何优化Nginx配置
导读:LNMP环境下 Nginx 配置优化实操指南 一 基础进程与连接优化 设置工作进程数与CPU亲和性:将worker_processes设为auto(或CPU核心数),并按核心数配置worker_cpu_affinity以减少上下文切换与C...
LNMP环境下 Nginx 配置优化实操指南
一 基础进程与连接优化
- 设置工作进程数与CPU亲和性:将worker_processes设为auto(或CPU核心数),并按核心数配置worker_cpu_affinity以减少上下文切换与CPU竞争。
- 提升文件描述符限制:设置worker_rlimit_nofile 65535,并在系统层将ulimit -n 65535,同时在**/etc/security/limits.conf**写入“* soft/hard nofile 65535”,避免“too many open files”。
- 事件模型与连接数:Linux使用use epoll;根据内存与负载调大worker_connections(如10240/65535),并开启multi_accept on以尽快接收新连接。
- 典型配置片段:
以上做法可显著提升并发处理与稳定性,是LNMP场景的通用起点。worker_processes auto; worker_cpu_affinity auto; worker_rlimit_nofile 65535; events { use epoll; worker_connections 10240; multi_accept on; }
二 传输压缩与静态资源缓存
- 启用Gzip压缩:开启gzip on; gzip_vary on; gzip_comp_level 6; ,并设置合适的gzip_types(如text/css、application/javascript等),在带宽受限与移动网络下收益明显。
- 可选Brotli:若环境支持,启用brotli on; brotli_comp_level 6; 并配置相同brotli_types,进一步降低体积。
- 静态资源长缓存:对图片、字体、JS/CSS等设置长期Cache-Control与expires,减少重复请求与回源。
- 典型配置片段:
压缩与缓存是“低成本高收益”的优化项,应优先启用。http { gzip on; gzip_vary on; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; brotli on; brotli_comp_level 6; brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ { expires 30d; add_header Cache-Control "public, immutable"; } }
三 超时与缓冲调优
- 长连接复用:合理设置keepalive_timeout(如15–65秒)与keepalive_requests(如100–100000),在短连接与长连接业务间取平衡,降低握手开销。
- 请求与响应超时:缩短client_body_timeout、client_header_timeout、send_timeout(如10–15秒)以避免慢客户端拖垮服务。
- 缓冲区大小:根据业务请求头/体大小调整client_body_buffer_size(如10K)、client_header_buffer_size(如1K)、large_client_header_buffers 4 4K、client_max_body_size(如8M/50M),减少磁盘临时文件与内存拷贝。
- 典型配置片段:
超时与缓冲的“黄金法则”是:尽量在内存中处理,避免落盘;连接能复用就复用。http { keepalive_timeout 65; keepalive_requests 1000; client_body_timeout 12; client_header_timeout 12; send_timeout 10; client_body_buffer_size 10K; client_header_buffer_size 1K; large_client_header_buffers 4 4K; client_max_body_size 50M; }
四 反向代理与负载均衡
- 基本反向代理:设置必要的Host/X-Real-IP/X-Forwarded-For/X-Forwarded-Proto请求头,确保后端获取真实客户端信息。
- 负载均衡策略:根据业务选择round-robin(默认)/least_conn/ip_hash;为节点配置weight、max_fails、fail_timeout实现被动健康检查与故障隔离。
- 典型配置片段:
通过策略与健康检查的组合,可显著提升后端可用性与吞吐。upstream backend { least_conn; server 10.0.0.11:9000 weight=3 max_fails=3 fail_timeout=30s; server 10.0.0.12:9000 weight=1 max_fails=3 fail_timeout=30s; } server { location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
五 安全与网络层优化及上线流程
- 安全加固:关闭server_tokens隐藏版本;启用HTTP/2与TLS 1.2/1.3,配置ssl_prefer_server_ciphers on、强密码套件、ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ,并开启HSTS;按需使用OCSP Stapling提升握手与首次访问体验。
- 网络内核参数:适度调大net.core.somaxconn、net.ipv4.ip_local_port_range、net.core.netdev_max_backlog,缩短net.ipv4.tcp_fin_timeout,在NAT/高并发短连接场景可考虑net.ipv4.tcp_tw_reuse=1(注意不同内核版本与云厂商的安全策略差异)。
- 日志与观测:对高QPS站点可关闭或缓冲access_log(如“access_log off; ”或“access_log … buffer=16k”),将error_log设为合适级别(如notice)以减少开销;结合Prometheus/Grafana与日志分析定位瓶颈。
- 上线流程与PHP-FPM协同:变更前先备份配置并执行nginx -t校验;无误后reload/restart;与PHP-FPM协同,启用OPcache并合理设置pm.max_children/start_servers/min_spare_servers/max_spare_servers,避免上游成为瓶颈。
- 典型配置片段:
安全与网络优化不仅提升性能,也显著降低攻击面与握手延迟。server { listen 443 ssl http2; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ssl_session_tickets off; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; }
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux LNMP如何优化Nginx配置
本文地址: https://pptw.com/jishu/768143.html
