以下是LNMP环境下Nginx的核心配置技巧,涵盖性能、安全及优化方向:
工作进程配置
worker_processes auto; // 自动匹配CPU核心数
worker_cpu_affinity auto; // 绑定CPU核心(Linux专用),减少进程竞争
worker_rlimit_nofile 65535; // 提升单个进程可打开的文件描述符数
事件模型优化
events { use epoll; worker_connections 10240; multi_accept on; } // Linux下启用epoll高并发模型
高效传输指令
sendfile on; tcp_nopush on; tcp_nodelay on; // 启用零拷贝传输、减少延迟
keepalive_timeout 65; keepalive_requests 1000; // 长连接超时与最大请求数
静态资源缓存
location ~* \.(jpg|css|js)$ {
expires 365d;
add_header Cache-Control "public, no-transform";
}
``` // 静态文件缓存365天,减少重复请求
Gzip压缩
gzip on;
gzip_types text/css application/javascript text/xml;
gzip_comp_level 6;
``` // 压缩文本类资源,降低传输体积
fastcgi_pass unix:/run/php/php7.4-fpm.sock; // 根据PHP版本调整fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; // 缓冲区大小,避免频繁IOfastcgi_read_timeout 300; // PHP脚本超时时间基础防护
server_tokens off; // 隐藏Nginx版本信息
location ~ /\.(ht|git|svn) {
deny all;
}
``` // 禁止访问敏感文件
SSL优化(HTTPS场景)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
``` // 启用强加密套件,优化SSL握手性能
负载均衡(多后端场景)
upstream backend {
least_conn; // 动态选择连接数最少的后端
server 192.168.1.1:9000;
server 192.168.1.2:9000;
}
``` // 适用于高并发流量分发
微缓存(高流量场景)
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=STATIC:10m inactive=24h;
location / {
proxy_cache STATIC;
proxy_cache_valid 200 1m; // 缓存200状态码响应1分钟
}
``` // 缓存动态内容,减轻后端压力
nginx -t // 修改后务必测试配置正确性systemctl reload nginx // 避免服务中断top、htop监控资源使用,或使用Prometheus+Grafana实现可视化监控注意:所有配置需根据服务器硬件(CPU/内存/磁盘类型)和业务场景调整,建议先在测试环境验证后再部署到生产环境。