优化Nginx在CentOS上的资源占用可以从多个方面入手,包括内核参数调整、Nginx配置优化、文件描述符限制、静态资源服务等。以下是详细的优化措施:
调整TCP连接参数:
net.ipv4.tcp_max_tw_buckets = 6000:减少TIME_WAIT状态的连接占用。net.ipv4.tcp_tw_recycle = 1(官方不建议修改):快速回收TIME_WAIT状态的连接。net.ipv4.tcp_tw_reuse = 1:启用TIME_WAIT状态的连接重用。net.ipv4.tcp_syncookies = 1:防止SYN flood攻击。调整文件描述符和连接数限制:
编辑 /etc/sysctl.conf 文件,增加如下内容:
fs.file-max = 10000000 fs.nr_open = 10000000 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 应用配置:
sysctl -p 调整工作进程和连接数:
worker_processes auto;:根据CPU核心数自动设置工作进程数。worker_connections 1024;:每个工作进程最多处理1024个连接。启用高效传输模式:
sendfile on;:启用sendfile,提升传输效率。tcp_nopush on;:对于大文件传输,采用tcp_nopush多个包一起发送。启用Gzip压缩:
减少网络传输消耗:
http { gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; } 静态资源缓存:
缓存静态文件,减少对后端服务器的请求:
server { location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf)$ { expires 30d; access_log off; } } 启用HTTP/2协议:
利用多路复用和头部压缩提高页面加载速度:
server { listen 443 ssl http2; } 优化SSL/TLS:
合理配置SSL/TLS协议,提高安全性和性能:
server { ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; ssl_prefer_server_ciphers on; } 限制请求速率和连接数:
防止恶意请求占用资源:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; location / { limit_req zone=one burst=5; } 监控和日志管理:
通过这些优化措施,可以显著降低Nginx在CentOS上的资源占用,提高其性能和稳定性。根据实际应用场景,可以灵活调整配置,以达到最佳效果。