Nginx高并发配置优化实战
Nginx以高性能著称,在合理配置下可以轻松处理数万并发连接。但默认配置是保守的,需要根据实际业务场景进行调优。本文分享Nginx在高并发场景下的配置优化经验。
核心配置
worker_processes:设置为CPU核心数(auto)。每个worker是单进程,绑定一个CPU核心,避免上下文切换。
worker_connections:每个worker的最大连接数。默认768,建议调整为10000-50000。注意总连接数 = worker_processes × worker_connections。
use epoll:Linux下使用epoll事件模型,效率远高于select/poll。在events块中添加 use epoll;。
multi_accept on:允许一个worker一次接受所有新连接,而不是每次只接受一个。
缓冲区优化
client_body_buffer_size:客户端请求体的缓冲区大小。POST请求体小于这个值时不会写临时文件,建议设为128k。
client_max_body_size:允许的最大请求体大小。上传文件场景需要调大(如100m)。
proxy_buffer_size:代理响应的第一部分的缓冲区。如果后端返回的Header很大,需要调大这个值避免502错误。
proxy_buffers:代理响应的缓冲区数量和大小。如 proxy_buffers 8 32k;。
Keep-Alive优化
开启与后端的Keep-Alive连接,避免每次请求都建立新的TCP连接。配置 upstream 中 keepalive 64;,在 location 中设置 proxy_http_version 1.1; 和 proxy_set_header Connection "";。
缓存和压缩
开启gzip压缩:gzip on; gzip_types text/plain application/json text/css application/javascript;。文本类资源压缩后可减少60%-80%的传输量。
开启静态文件缓存:location ~* \.(jpg|png|css|js)$ { expires 30d; access_log off; }。静态文件直接由Nginx返回,不经过后端。
安全配置
隐藏版本号 server_tokens off;。限制请求速率 limit_req_zone。配置SSL时使用TLS 1.2+和强加密套件。设置 client_header_timeout 和 client_body_timeout 防止慢速攻击。
