From d41e9b1f9483b923183d6b318e3ceb772d652559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=E1=BA=A3i=20Chu=20V=C4=83n?= Date: Thu, 20 Aug 2026 11:15:26 +0700 Subject: [PATCH] Update aa_nginx_optimize.sh --- aa_nginx_optimize.sh | 75 +++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 39 deletions(-) diff --git a/aa_nginx_optimize.sh b/aa_nginx_optimize.sh index 7a1a5a1..3d5899d 100644 --- a/aa_nginx_optimize.sh +++ b/aa_nginx_optimize.sh @@ -7,7 +7,7 @@ if [ "$EUID" -ne 0 ]; then fi echo "==========================================================" -echo " BẮT ĐẦU TỐI ƯU HỆ THỐNG THEO CẤU TRÚC GỐC AAPANEL " +echo " SỬA LỖI TRÙNG LẶP & TỐI ƯU CẤU TRÚC GỐC AAPANEL " echo "==========================================================" # --------------------------------------------------------- @@ -16,15 +16,12 @@ echo "==========================================================" CPU_CORES=$(nproc) TOTAL_RAM_MB=$(free -m | awk '/^Mem:/{print $2}') -# Tính toán các thông số chịu tải dựa trên RAM if [ "$TOTAL_RAM_MB" -gt 8000 ]; then - # Hệ thống RAM lớn (> 8GB) WORKER_CONNECTIONS=65535 SOMAXCONN=65535 MAX_SYN_BACKLOG=65535 CONNTRACK_MAX=262144 else - # Hệ thống RAM nhỏ (<= 8GB) WORKER_CONNECTIONS=20480 SOMAXCONN=16384 MAX_SYN_BACKLOG=16384 @@ -33,6 +30,7 @@ fi WORKER_LIMIT_NOFILE=$((WORKER_CONNECTIONS * 2)) NGINX_CONF="/www/server/nginx/conf/nginx.conf" +PROXY_CONF="/www/server/nginx/conf/proxy.conf" if [ ! -f "$NGINX_CONF" ]; then echo "[-] Không tìm thấy file $NGINX_CONF. Script này chỉ dành cho aaPanel." @@ -43,7 +41,6 @@ echo "--- Thông số cấu hình tối ưu sẽ áp dụng ---" echo "CPU Cores: $CPU_CORES | RAM: $TOTAL_RAM_MB MB" echo "Worker Connections: $WORKER_CONNECTIONS" echo "Worker Limit Nofile: $WORKER_LIMIT_NOFILE" -echo "Kernel Somaxconn: $SOMAXCONN" echo "------------------------------------" # --------------------------------------------------------- @@ -53,7 +50,6 @@ echo "[+] Đang cấu hình và tối ưu hàng đợi mạng (sysctl)..." BACKUP_SYSCTL="/etc/sysctl.conf.bak.$(date +%F_%T)" cp /etc/sysctl.conf "$BACKUP_SYSCTL" -# Dọn dẹp cấu hình cũ chống trùng lặp sed -i '/fs.file-max/d' /etc/sysctl.conf sed -i '/net.core.somaxconn/d' /etc/sysctl.conf sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf @@ -82,9 +78,7 @@ net.netfilter.nf_conntrack_max = $CONNTRACK_MAX net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 EOF - sysctl -p &>/dev/null -echo "[+] Cấu hình Kernel mạng hoàn tất." # --------------------------------------------------------- # Bước 3: Tăng giới hạn mở file hệ thống (/etc/security/limits.conf) @@ -92,20 +86,43 @@ echo "[+] Cấu hình Kernel mạng hoàn tất." echo "[+] Đang mở rộng giới hạn File Descriptors (uLimit)..." BACKUP_LIMITS="/etc/security/limits.conf.bak.$(date +%F_%T)" cp /etc/security/limits.conf "$BACKUP_LIMITS" - sed -i "/www/d" /etc/security/limits.conf sed -i "/root/d" /etc/security/limits.conf - cat <> /etc/security/limits.conf www soft nofile $WORKER_LIMIT_NOFILE www hard nofile $WORKER_LIMIT_NOFILE root soft nofile $WORKER_LIMIT_NOFILE root hard nofile $WORKER_LIMIT_NOFILE EOF -echo "[+] Cấu hình giới hạn ulimit hoàn tất." # --------------------------------------------------------- -# Bước 4: Khởi tạo nginx.conf tối ưu dựa trên cấu trúc aaPanel +# Bước 4: Sao lưu và Tối ưu hóa file bổ trợ proxy.conf của aaPanel +# --------------------------------------------------------- +if [ -f "$PROXY_CONF" ]; then + BACKUP_PROXY="${PROXY_CONF}.bak.$(date +%F_%T)" + cp "$PROXY_CONF" "$BACKUP_PROXY" + echo "[+] Đã sao lưu và tối ưu lại tệp bổ trợ proxy.conf của aaPanel..." + + # Ghi đè file proxy.conf với thông số Buffer tối ưu chịu tải cao + cat < "$PROXY_CONF" +proxy_connect_timeout 60s; +proxy_send_timeout 60s; +proxy_read_timeout 60s; +proxy_buffer_size 64k; +proxy_buffers 16 128k; +proxy_busy_buffers_size 256k; +proxy_temp_file_write_size 256k; +proxy_set_header Host \$host; +proxy_set_header X-Real-IP \$remote_addr; +proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; +proxy_set_header X-Forwarded-Proto \$scheme; +proxy_set_header Connection ""; +proxy_http_version 1.1; +EOF +fi + +# --------------------------------------------------------- +# Bước 5: Khởi tạo nginx.conf (Đã lược bỏ directive trùng) # --------------------------------------------------------- echo "[+] Đang cập nhật tệp cấu hình Nginx gốc của aaPanel..." BACKUP_NGINX="${NGINX_CONF}.bak.$(date +%F_%T)" @@ -144,21 +161,19 @@ http server_names_hash_bucket_size 1024; - # Tăng Buffer chống nghẽn Header và Request lớn khi làm Proxy + # Tối ưu Buffer Header (Không trùng với proxy.conf) client_header_buffer_size 64k; large_client_header_buffers 4 32k; - client_body_buffer_size 128k; client_max_body_size 256m; sendfile on; tcp_nopush on; tcp_nodelay on; - # Keepalive lớn kết hợp chống treo kết nối cũ keepalive_timeout 90; keepalive_requests 10000; - # Tối ưu hóa các thông số FastCGI cho PHP (nếu có dùng vhost thường) + # Cấu hình PHP FastCGI giữ nguyên gốc aaPanel fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; @@ -168,25 +183,7 @@ http fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; - # Tối ưu hóa cấu hình lõi cho Nginx Reverse Proxy toàn cục - proxy_http_version 1.1; - proxy_set_header Host \$host; - proxy_set_header X-Real-IP \$remote_addr; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto \$scheme; - proxy_set_header Connection ""; # Kích hoạt Keepalive Upstream liên tục tới backend - - # Tinh chỉnh Proxy Buffer để tránh thắt nút cổ chai Disk I/O - proxy_connect_timeout 60s; - proxy_send_timeout 60s; - proxy_read_timeout 60s; - proxy_buffering on; - proxy_buffer_size 64k; - proxy_buffers 16 128k; - proxy_busy_buffers_size 256k; - proxy_temp_file_write_size 256k; - - # Gzip chuẩn chịu tải và tối ưu dung lượng truyền tải + # Gzip chuẩn tốc độ cao gzip on; gzip_min_length 1k; gzip_buffers 4 16k; @@ -197,7 +194,6 @@ http gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\."; - # Giới hạn kết nối phòng chống DDoS cơ bản limit_conn_zone \$binary_remote_addr zone=perip:10m; limit_conn_zone \$server_name zone=perserver:10m; @@ -239,7 +235,7 @@ EOF echo "[+] Cấu hình Nginx tối ưu hoàn tất." # --------------------------------------------------------- -# Bước 5: Kiểm tra và Khởi chạy +# Bước 6: Kiểm tra và Khởi chạy # --------------------------------------------------------- echo "[+] Đang kiểm tra cấu hình và kích hoạt..." @@ -247,11 +243,12 @@ echo "[+] Đang kiểm tra cấu hình và kích hoạt..." if [ $? -eq 0 ]; then /etc/init.d/nginx restart echo "==========================================================" - echo " HOÀN THÀNH TỐI ƯU CỰC HẠN THEO CẤU TRÚC GỐC AAPANEL! " + echo " THÀNH CÔNG! HỆ THỐNG ĐÃ HOẠT ĐỘNG VỚI HIỆU NĂNG ĐỈNH CAO! " echo "==========================================================" else - echo "[-] Cấu hình lỗi! Đang khôi phục lại trạng thái cũ..." + echo "[-] Cấu hình vẫn lỗi! Đang tự động khôi phục toàn bộ trạng thái gốc..." cp "$BACKUP_NGINX" "$NGINX_CONF" + [ -f "$PROXY_CONF" ] && cp "$BACKUP_PROXY" "$PROXY_CONF" cp "$BACKUP_SYSCTL" /etc/sysctl.conf && sysctl -p &>/dev/null cp "$BACKUP_LIMITS" /etc/security/limits.conf /etc/init.d/nginx restart