優化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上的資源占用,提高其性能和穩定性。根據實際應用場景,可以靈活調整配置,以達到最佳效果。