Ngay sau khi nhận thông tin đăng nhập SSH của một máy chủ Linux mới, nhiều lập trình viên thường bắt tay vào cài đặt ngay Nginx, Docker hoặc cơ sở dữ liệu mà bỏ qua bước gia cố bảo mật và tinh chỉnh bộ nhớ hạt nhân cơ bản. Chỉ mất chưa đầy 10 phút thực hiện theo 4 bước dưới đây, máy chủ của bạn sẽ chịu tải ổn định hơn hẳn và ngăn chặn hiệu quả các cuộc dò quét mật khẩu tự động trên Internet.
1. Cấu hình tường lửa UFW tối giản theo nguyên tắc Least Privilege
Nguyên tắc an toàn đầu tiên khi triển khai một máy chủ ảo riêng biệt cho ứng dụng web là đóng toàn bộ các cổng kết nối đến mặc định và chỉ mở duy nhất các cổng dịch vụ bắt buộc (22 cho SSH, 80 cho HTTP và 443 cho HTTPS):
sudo apt update && sudo apt upgrade -y sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow OpenSSH sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw --force enable sudo ufw status verbose Nếu ứng dụng Node.js, Python (FastAPI/Gunicorn) hoặc Go của bạn đang lắng nghe ở cổng nội bộ như 3000 hay 8080, tuyệt đối không mở cổng này ra ngoài Internet mà chỉ bind vào 127.0.0.1 và đặt phía sau Nginx Reverse Proxy.
2. Khởi tạo bộ nhớ Swap và tinh chỉnh vm.swappiness cho ổ cứng NVMe
Trên các gói Cloud VPS có dung lượng RAM từ 2GB đến 4GB, một đợt tăng đột biến tiến trình build mã nguồn hoặc truy vấn MySQL phức tạp rất dễ kích hoạt cơ chế OOM Killer làm ngắt dịch vụ cơ sở dữ liệu. Thiết lập tệp Swap 2GB–4GB kèm chỉ số swappiness=10 giúp hệ thống ưu tiên tối đa tốc độ RAM vật lý nhưng vẫn có vùng đệm an toàn khi cần:
sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab # Chỉ dùng Swap khi RAM thực sử dụng vượt ~90% sudo sysctl vm.swappiness=10 echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf 3. Kích hoạt thuật toán chống tắc nghẽn mạng TCP BBR
Từ nhân Linux 4.9 trở lên (mặc định có sẵn trên Ubuntu 22.04 và 24.04), thuật toán TCP BBR do đội ngũ kỹ sư mạng phát triển giúp cải thiện đáng kể thông lượng truyền tải dữ liệu và giảm độ trễ phản hồi HTTPS cho người dùng truy cập qua mạng di động 4G/5G:
cat <<EOF | sudo tee -a /etc/sysctl.conf net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr EOF sudo sysctl -p sysctl net.ipv4.tcp_congestion_control Khi kết quả dòng cuối trả về net.ipv4.tcp_congestion_control = bbr, luồng truyền tải gói tin TCP trên máy chủ đã sẵn sàng đạt hiệu suất tối ưu.
4. Tối ưu cấu hình Worker & Gzip cơ bản trên Nginx
Sau khi cài đặt Nginx làm tầng đón truy cập đầu tiên, hãy đảm bảo tính năng nén văn bản và giữ kết nối (keepalive) đã được bật cho các định dạng JSON API, CSS và JavaScript:
worker_processes auto; events { worker_connections 2048; multi_accept on; } http { sendfile on; tcp_nopush on; keepalive_timeout 65; server_tokens off; gzip on; gzip_comp_level 5; gzip_min_length 256; gzip_types application/json application/javascript text/css text/plain application/xml; } Lưu ý cuối cùng: Đừng quên bật dịch vụ
unattended-upgradesvà kiểm tra nhật ký hệ thống định kỳ bằngjournalctl -p 3 -xbđể phát hiện sớm mọi cảnh báo cấp độ phần dịch vụ nền trước khi ảnh hưởng tới người dùng cuối.
Áp dụng nhất quán bốn bước chuẩn hóa trên mỗi khi khởi tạo máy chủ mới sẽ giúp hạ tầng ứng dụng web vận hành êm ái, bảo mật và tiết kiệm tài nguyên suốt vòng đời dự án.
