nginx优化
推荐配置:优化 SSL 性能
ssl_protocols TLSv1.2 TLSv1.3; # 启用 TLS 1.2 和 1.3
ssl_ciphers HIGH:!aNULL:!MD5; # 加密套件配置
ssl_prefer_server_ciphers on; # 优先使用服务器的加密套件
ssl_session_cache shared:SSL:10m; # SSL 会话缓存
ssl_session_timeout 10m; # SSL 会话超时时间
工作进程数(worker_processes):
设置为 CPU 核心数或核心数的两倍,可以根据服务器的实际情况调整。
示例:worker_processes auto;
工作进程连接数(worker_connections):
每个工作进程可以处理的最大连接数。默认值为 1024,通常需要根据服务器的内存和负载情况进行调整。
示例:worker_connections 10240;
事件模型(events):
使用 epoll(Linux)或 kqueue(FreeBSD)作为事件模型,这些模型比默认的 select 模型更高效。
示例:use epoll;
文件描述符限制(worker_rlimit_nofile):
增加每个工作进程可以打开的最大文件描述符数量。
示例:worker_rlimit_nofile 65535;
缓存设置:
启用缓存可以减少对后端服务器的请求,提高响应速度。
示例:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
Gzip 压缩:
启用 Gzip 压缩可以减少传输的数据量,加快页面加载速度。
示例:
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
发送文件(sendfile):
启用 sendfile 可以提高文件传输效率。
示例:sendfile on;
TCP_NODELAY:
禁用 Nagle 算法,可以减少小包的延迟。
示例:tcp_nodelay on;
连接超时(keepalive_timeout):
设置合理的连接超时时间,可以减少服务器资源的占用。
示例:keepalive_timeout 65;
客户端请求头缓冲区大小(client_header_buffer_size):
增加缓冲区大小,以处理大型请求头。
示例:client_header_buffer_size 1k;
限制单个客户端的连接数(limit_conn_zone 和 limit_conn):
限制单个 IP 地址的并发连接数,防止恶意攻击。
示例:
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 100;
限制请求速率(limit_req_zone 和 limit_req):
限制请求速率,防止请求洪水攻击。
示例:
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
limit_req zone=one burst=10 nodelay;
日志记录:
优化日志记录,减少日志文件的大小和写入频率。
示例:access_log /var/log/nginx/access.log combined;
SSL 优化:
如果使用 HTTPS,优化 SSL 配置可以提高安全性和性能。
示例:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
HTTP/2:
启用 HTTP/2 可以提高传输效率。
示例:listen 443 ssl http2;