Nginx性能调优

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;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值