1.调整工作进程:Nginx 的性能很大程度上依赖于工作进程的设置。一般来说,工作进程的数量应等于或接近于 CPU 核心数。
worker_processes auto;
2.cup亲和配置:CPU亲和(affinity)减少进程之间不断频繁切换,减少性能损耗,其实现原理就是通过将CPU核心和nginx工作进程绑定方式,把每个worker进程固定到对应的cpu上执行,减少切换CPU的cache的 miss,获得更好的性能。
worker_cpu_affinity_auto; #cpu亲和
3.优化工作进程的最大连接数:调整worker_connection参数以优化每个工作进程的最大连接数,默认值通常是足够的,但也可以根据实际需求来调整。
events {
worker_connections 1024;
}
4.启用缓存:启用文件缓存,nginx可以缓存静态文件,减少磁盘IO
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
}
启动代理缓存:如果nginx作为反向代理,可以配置代理缓存
location / {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
5.启用压缩:启动Gzip压缩减少传输大小,提高加载速度
http {
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
6.优化缓冲区设置:调整缓冲区设置以适应你的负载
http {
client_body_buffer_size 10K;
client_max_body_size 8m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
}
7.启动连接重用:nginx启用keeplive连接来减少tcp握手的开销
http {
keepalive_timeout 65;
keepalive_requests 100;
}
8.限制连接请求速率:限制客户端的请求速率,防止滥用。
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
}
server {
location / {
limit_req zone=mylimit burst=5;
}
}
9.日志优化:调整日志的级别
http {
access_log /var/log/nginx/access.log combined buffer=16k flush=5m;
error_log /var/log/nginx/error.log warn;
}
10.配置防盗链
server_tokens off; #禁止浏览器新爱是nginx版本号
11.隐藏nginx版本
server_tokens off; #禁止浏览器新爱是nginx版本号
总结
CPU亲和、worker进程数默认和cup核心数相同。
调整每个worker进程的最大链接数,默认是1024,调整25532
开启tcp长连接,以及长连接超时时间keepalived
开启文件传输压缩gzip
开启静态文件expires缓存
调整缓冲区设置适应负载
隐藏nginx版本号
配置防盗链
限制请求速率等等