🔐 1. Bảo mật Nginx cơ bản

1.1. Ẩn version Nginx

Mở file cấu hình chính:

sudo nano /etc/nginx/nginx.conf

Thêm dòng sau trong khối http { ... }:

server_tokens off;

Sau đó reload:

sudo systemctl reload nginx

1.2. Giới hạn các HTTP methods nguy hiểm

Trong từng server { ... }, thêm:

if ($request_method !~ ^(GET|POST|HEAD)$) {
    return 444;
}

Trả về mã lỗi 444 (Nginx drop kết nối mà không trả lời).


1.3. Giới hạn kích thước file upload

client_max_body_size 10M;

Đặt trong khối server { ... } hoặc http { ... }.


🛡️ 2. Chống tấn công DDoS & Brute Force nhẹ

2.1. Thêm giới hạn request (rate limit)

Trong http block (/etc/nginx/nginx.conf), thêm:

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

Trong server hoặc location /, thêm:

limit_req zone=one burst=20 nodelay;

→ Cho phép tối đa 10 request/giây, vượt quá sẽ bị chặn.


🧼 3. Xóa site mặc định (không dùng đến)

sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/sites-available/default
sudo systemctl reload nginx

🔧 4. Tự động khởi động lại Nginx khi server reboot

Nếu chưa được bật sẵn:

sudo systemctl enable nginx

🔁 5. Tạo script kiểm tra cấu hình & reload an toàn

Tạo file /usr/local/bin/nginx-reload-safe.sh:

sudo nano /usr/local/bin/nginx-reload-safe.sh

Thêm nội dung:

#!/bin/bash
if nginx -t; then
    systemctl reload nginx
    echo "Nginx reloaded successfully."
else
    echo "Nginx configuration test failed!"
fi

Cấp quyền:

sudo chmod +x /usr/local/bin/nginx-reload-safe.sh

Dùng lệnh này mỗi khi chỉnh sửa file cấu hình:

sudo nginx-reload-safe.sh

✅ Kiểm tra lại toàn bộ

  • Trang web hoạt động bình thường? → ✅
  • Truy cập được bằng HTTPS? → ✅
  • Dùng curl -I http://yourdomain.com để test headers.