❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.
Ngoài Apache (mặc định) và OpenLiteSpeed, DirectAdmin cũng hỗ trợ Nginx thuần làm web server. Nginx xử lý concurrent connections hiệu quả hơn Apache, phù hợp cho website có traffic cao.
Bài viết này hướng dẫn cách cài đặt Nginx thuần trên DirectAdmin (không phải nginx_apache reverse proxy).
💡 Hướng dẫn này áp dụng cho DirectAdmin 1.62+ và tương thích với PHP 8.1, 8.2, 8.3 hiện tại. Các phiên bản DirectAdmin cũ có thể cần điều chỉnh một số lệnh.
Nginx vs Apache vs nginx_apache
- Apache: Hỗ trợ .htaccess đầy đủ, phù hợp shared hosting. Tốn RAM hơn.
- nginx_apache: Nginx front-end + Apache back-end. Cân bằng giữa hiệu năng và tương thích.
- Nginx thuần: Nhanh nhất, ít tốn RAM nhất. Nhưng KHÔNG hỗ trợ .htaccess, cần viết Nginx config thay thế.
💡 Để kiểm tra webserver hiện tại đang dùng, chạy: cd /usr/local/directadmin/custombuild && ./build current_webserver
Cài đặt Nginx thuần
Trước khi chuyển đổi, hãy backup cấu hình hiện tại:
# Backup cấu hình Apache hiện tại (nếu có)
cp -r /etc/httpd/conf /root/apache_backup_$(date +%Y%m%d)
cp -r /usr/local/directadmin/data/users /root/users_backup_$(date +%Y%m%d)
Thực hiện chuyển đổi sang Nginx:
cd /usr/local/directadmin/custombuild
./build update
./build set webserver nginx
./build set php1_mode php-fpm
./build nginx
./build php n
./build rewrite_confs
PHP phải dùng mode php-fpm khi chạy Nginx (không dùng mod_php). Với PHP 8.x hiện tại, performance của PHP-FPM đã được tối ưu đáng kể so với các phiên bản cũ.
Kiểm tra trạng thái cài đặt
Sau khi cài đặt xong, kiểm tra dịch vụ đang chạy:
# Kiểm tra Nginx status
systemctl status nginx
# Kiểm tra PHP-FPM status
systemctl status php-fpm
# Test cấu hình Nginx
nginx -t
# Xem thông tin webserver từ DirectAdmin
cd /usr/local/directadmin/custombuild
./build versions | grep -E "(webserver|php)"
Cấu hình WordPress trên Nginx
WordPress permalink cần rewrite rules. Trên Apache dùng .htaccess, trên Nginx cần thêm vào config:
# Tạo file custom Nginx config
vi /usr/local/directadmin/data/templates/custom/nginx_server.conf
Thêm nội dung sau cho WordPress pretty permalinks:
location / {
try_files $uri $uri/ /index.php?$args;
}
# Bảo vệ wp-config.php
location = /wp-config.php {
deny all;
}
# Tối ưu static files
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
Áp dụng cấu hình:
cd /usr/local/directadmin/custombuild
./build rewrite_confs
systemctl reload nginx
⚠️ Chuyển sang Nginx thuần có nghĩa .htaccess không hoạt động. Các plugin WordPress dùng .htaccess (security, redirect, cache) sẽ cần cấu hình lại qua Nginx config. Nếu không chắc, dùng nginx_apache thay vì Nginx thuần.
Troubleshooting phổ biến
Một số lỗi thường gặp và cách khắc phục:
- 502 Bad Gateway: Thường do PHP-FPM chưa start hoặc thiếu cấu hình socket. Kiểm tra
systemctl status php-fpm - 403 Forbidden: Vấn đề permissions hoặc missing index file. Kiểm tra ownership và index.php
- 404 cho WordPress permalinks: Thiếu rewrite rules như hướng dẫn ở trên
Check logs để debug:
# Nginx error logs
tail -f /var/log/nginx/error.log
# PHP-FPM logs
tail -f /var/log/php-fpm/www-error.log
Tổng kết
Nginx thuần cho hiệu năng tốt nhất nhưng đòi hỏi kiến thức cấu hình Nginx. Nếu bạn chạy WordPress hoặc ứng dụng dùng .htaccess nhiều, nên dùng nginx_apache (reverse proxy) thay vì Nginx thuần.
Với DirectAdmin phiên bản mới và PHP 8.x, việc chuyển đổi diễn ra mượt mà hơn và performance được cải thiện đáng kể. Tuy nhiên, hãy luôn test kỹ trên staging environment trước khi áp dụng cho production.
Có thể bạn cần xem thêm
Về tác giả
Thạch Phạm
Đồng sáng lập và Giám đốc điều hành của AZDIGI. Có hơn 15 năm kinh nghiệm trong phổ biến kiến thức liên quan đến WordPress tại thachpham.com, phát triển website và phát triển hệ thống.