1.Worker 线程与系统层优化
1.1 worker_processes 自动使用所有 CPU
worker_processes auto;
1.2 每个 worker 最大连接数(建议 10240+)
worker_connections 10240;
1.3 启用多路复用(epoll)
Linux 下默认 epoll,无需配置;如果旧系统可强制:
events {
use epoll;
}
1.4 启用 accept 高效模式 ( 减少惊群,提升高并发场景性能 )
worker_rlimit_nofile 200000;
events {
multi_accept on;
accept_mutex off;
}
2. HTTP 层优化
2.1 关闭 server_tokens(安全 & 性能)
server_tokens off;
2.2 增大 header buffer(避免 413 / 400)
client_max_body_size 100m;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
2.3 连接复用 keepalive
keepalive_timeout 75;
keepalive_requests 10000;
2.4 启用sendfile
sendfile on; # 启用零拷贝(Zero-Copy),让内核直接把文件从磁盘发送到 socket,不走用户态
tcp_nopush on; # 让内核尽量把响应头 + 大文件内容 合并到完整的 TCP 包一起发出,减少包的数量提高吞吐量,与nodelay相反
tcp_nodelay off; # 关闭 Nagle 算法,让 Nginx 立即发送小包,不等待 TCP 缓冲区满,降低延迟
3. 反向代理优化(proxy)
3.1 关闭缓冲到磁盘(避免 IO 压力)
proxy_buffering on;
proxy_buffers 8 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
3.2 后端健康检查超时
proxy_connect_timeout 3s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
3.3 启用 keepalive 上游
upstream backend {
server 10.0.0.11:8080;
server 10.0.0.12:8080;
keepalive 32;
}
4. Gzip 和 Brotli 压缩
4.1 gzip(推荐开启)
gzip on;
gzip_min_length 1k;
gzip_proxied any;
gzip_comp_level 4;
gzip_types text/plain text/css application/json application/javascript application/xml;
4.2 brotli(如果启用模块)
brotli on;
brotli_comp_level 5;
brotli_types text/plain text/css application/json application/javascript application/xml;
5. 缓存优化(性能提升巨大)
5.1 静态文件缓存
location ~* \.(jpg|png|js|css|gif|woff|woff2)$ {
expires 30d;
access_log off;
}
5.2 proxy_cache 反向代理缓存
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:100m inactive=1d;
location /api/ {
proxy_cache cache_zone;
proxy_cache_valid 200 1m;
proxy_pass [http://backend;](http://backend;)
}
5.3 fastcgi_cache(PHP)缓存
fastcgi_cache_path /var/cache/fastcgi levels=1:2 keys_zone=f_cache:50m;
location ~ \.php$ {
fastcgi_cache f_cache;
fastcgi_cache_valid 200 1m;
}
6. TLS/SSL 优化(HTTPS 加速)
6.1 HTTP/2 + 最佳加密套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
6.2 开启 HTTP/2
listen 443 ssl http2;
7. 日志性能优化(磁盘写入减少 70%+)
7.1 静态资源不写日志
location ~* \.(gif|jpg|png|css|js|ico)$ {
access_log off;
}
7.2 access.log 缓冲
access_log /var/log/nginx/access.log main buffer=512k flush=1s;
8. 文件系统 & OS 层面优化
8.1 Linux 优化
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
sysctl -p
9. 减少 Nginx 内存占用 & 加速 restart
9.1 禁用目录扫描
autoindex off;
9.2 worker 优雅退出
worker_shutdown_timeout 10s;
user nginx;
worker_processes auto;
worker_rlimit_nofile 200000;
events {
use epoll;
worker_connections 10240;
multi_accept on;
accept_mutex off;
}
http {
include mime.types;
default_type application/octet-stream;
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 75;
keepalive_requests 10000;
client_max_body_size 100m;
client_header_buffer_size 8k;
large_client_header_buffers 4 32k;
# gzip
gzip on;
gzip_min_length 1k;
gzip_comp_level 4;
gzip_types text/plain text/css application/json application/javascript application/xml;
access_log /var/log/nginx/access.log buffer=512k flush=1s;
}
1154

被折叠的 条评论
为什么被折叠?



