Update aa_nginx_optimize.sh

This commit is contained in:
haicv committed 2026-08-20 11:15:26 +07:00
1 parent fead852c15
commit d41e9b1f94
1 file changed
+36 -39
+36 -39
View File
@@ -7,7 +7,7 @@ if [ "$EUID" -ne 0 ]; then
fi fi
echo "==========================================================" 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 "==========================================================" echo "=========================================================="
# --------------------------------------------------------- # ---------------------------------------------------------
@@ -16,15 +16,12 @@ echo "=========================================================="
CPU_CORES=$(nproc) CPU_CORES=$(nproc)
TOTAL_RAM_MB=$(free -m | awk '/^Mem:/{print $2}') 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 if [ "$TOTAL_RAM_MB" -gt 8000 ]; then
# Hệ thống RAM lớn (> 8GB)
WORKER_CONNECTIONS=65535 WORKER_CONNECTIONS=65535
SOMAXCONN=65535 SOMAXCONN=65535
MAX_SYN_BACKLOG=65535 MAX_SYN_BACKLOG=65535
CONNTRACK_MAX=262144 CONNTRACK_MAX=262144
else else
# Hệ thống RAM nhỏ (<= 8GB)
WORKER_CONNECTIONS=20480 WORKER_CONNECTIONS=20480
SOMAXCONN=16384 SOMAXCONN=16384
MAX_SYN_BACKLOG=16384 MAX_SYN_BACKLOG=16384
@@ -33,6 +30,7 @@ fi
WORKER_LIMIT_NOFILE=$((WORKER_CONNECTIONS * 2)) WORKER_LIMIT_NOFILE=$((WORKER_CONNECTIONS * 2))
NGINX_CONF="/www/server/nginx/conf/nginx.conf" NGINX_CONF="/www/server/nginx/conf/nginx.conf"
PROXY_CONF="/www/server/nginx/conf/proxy.conf"
if [ ! -f "$NGINX_CONF" ]; then if [ ! -f "$NGINX_CONF" ]; then
echo "[-] Không tìm thấy file $NGINX_CONF. Script này chỉ dành cho aaPanel." 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 "CPU Cores: $CPU_CORES | RAM: $TOTAL_RAM_MB MB"
echo "Worker Connections: $WORKER_CONNECTIONS" echo "Worker Connections: $WORKER_CONNECTIONS"
echo "Worker Limit Nofile: $WORKER_LIMIT_NOFILE" echo "Worker Limit Nofile: $WORKER_LIMIT_NOFILE"
echo "Kernel Somaxconn: $SOMAXCONN"
echo "------------------------------------" 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)" BACKUP_SYSCTL="/etc/sysctl.conf.bak.$(date +%F_%T)"
cp /etc/sysctl.conf "$BACKUP_SYSCTL" 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 '/fs.file-max/d' /etc/sysctl.conf
sed -i '/net.core.somaxconn/d' /etc/sysctl.conf sed -i '/net.core.somaxconn/d' /etc/sysctl.conf
sed -i '/net.core.netdev_max_backlog/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_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216
EOF EOF
sysctl -p &>/dev/null 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) # 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)..." echo "[+] Đang mở rộng giới hạn File Descriptors (uLimit)..."
BACKUP_LIMITS="/etc/security/limits.conf.bak.$(date +%F_%T)" BACKUP_LIMITS="/etc/security/limits.conf.bak.$(date +%F_%T)"
cp /etc/security/limits.conf "$BACKUP_LIMITS" cp /etc/security/limits.conf "$BACKUP_LIMITS"
sed -i "/www/d" /etc/security/limits.conf sed -i "/www/d" /etc/security/limits.conf
sed -i "/root/d" /etc/security/limits.conf sed -i "/root/d" /etc/security/limits.conf
cat <<EOF >> /etc/security/limits.conf cat <<EOF >> /etc/security/limits.conf
www soft nofile $WORKER_LIMIT_NOFILE www soft nofile $WORKER_LIMIT_NOFILE
www hard nofile $WORKER_LIMIT_NOFILE www hard nofile $WORKER_LIMIT_NOFILE
root soft nofile $WORKER_LIMIT_NOFILE root soft nofile $WORKER_LIMIT_NOFILE
root hard nofile $WORKER_LIMIT_NOFILE root hard nofile $WORKER_LIMIT_NOFILE
EOF 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 <<EOF > "$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..." 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)" BACKUP_NGINX="${NGINX_CONF}.bak.$(date +%F_%T)"
@@ -144,21 +161,19 @@ http
server_names_hash_bucket_size 1024; 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; client_header_buffer_size 64k;
large_client_header_buffers 4 32k; large_client_header_buffers 4 32k;
client_body_buffer_size 128k;
client_max_body_size 256m; client_max_body_size 256m;
sendfile on; sendfile on;
tcp_nopush on; tcp_nopush on;
tcp_nodelay on; tcp_nodelay on;
# Keepalive lớn kết hợp chống treo kết nối cũ
keepalive_timeout 90; keepalive_timeout 90;
keepalive_requests 10000; 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_connect_timeout 300;
fastcgi_send_timeout 300; fastcgi_send_timeout 300;
fastcgi_read_timeout 300; fastcgi_read_timeout 300;
@@ -168,25 +183,7 @@ http
fastcgi_temp_file_write_size 256k; fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on; fastcgi_intercept_errors on;
# Tối ưu hóa cấu hình lõi cho Nginx Reverse Proxy toàn cục # Gzip chuẩn tốc độ cao
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 on; gzip on;
gzip_min_length 1k; gzip_min_length 1k;
gzip_buffers 4 16k; gzip_buffers 4 16k;
@@ -197,7 +194,6 @@ http
gzip_proxied expired no-cache no-store private auth; gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\."; 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 \$binary_remote_addr zone=perip:10m;
limit_conn_zone \$server_name zone=perserver: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." 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..." 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 if [ $? -eq 0 ]; then
/etc/init.d/nginx restart /etc/init.d/nginx restart
echo "==========================================================" 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 "==========================================================" echo "=========================================================="
else 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" 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_SYSCTL" /etc/sysctl.conf && sysctl -p &>/dev/null
cp "$BACKUP_LIMITS" /etc/security/limits.conf cp "$BACKUP_LIMITS" /etc/security/limits.conf
/etc/init.d/nginx restart /etc/init.d/nginx restart