Hướng dẫn cấu hình Hướng dẫn cài đặt Nginx trên VPS Ubuntu chi tiết trên VPS/Server (A-Z)

Chào bạn, tôi là kỹ sư hệ thống của bạn. Trong môi trường sản xuất (Production), việc cài đặt web server không chỉ đơn thuần là chạy lệnh install. Chúng ta cần đảm bảo tính ổn định, hiệu suất tối ưu và trên hết là bảo mật nghiêm ngặt. Dưới đây là quy trình chuẩn hóa để triển khai Nginx trên nền tảng Ubuntu.


## Yêu cầu chuẩn bị: Cấu hình VPS tối thiểu

Để Nginx hoạt động ổn định và có khả năng chịu tải tốt, tôi khuyến nghị cấu hình sau:

  • Hệ điều hành: Ubuntu 20.04 LTS, 22.04 LTS hoặc 24.04 LTS (Khuyên dùng bản LTS để có sự hỗ trợ lâu dài).
  • CPU: Tối thiểu 1 Core.
  • RAM: Tối thiểu 512MB (Khuyên dùng 1GB trở lên nếu chạy thêm PHP-FPM hoặc Database).
  • Quyền hạn: Truy cập User có quyền sudo hoặc quyền root.
  • Cổng kết nối: Đã mở port 80 (HTTP) và 443 (HTTPS) trên firewall của nhà cung cấp VPS.

## Cảnh báo quan trọng

  1. Backup Dữ liệu: Trước khi thực hiện bất kỳ thay đổi nào trên server đang hoạt động, hãy tạo một bản Snapshot hoặc Backup dữ liệu toàn bộ server. Sai sót trong cấu hình có thể dẫn đến gián đoạn dịch vụ (Downtime).
  2. Môi trường: Hướng dẫn này áp dụng cho server sạch (Clean Install). Nếu server đã cài Apache, hãy gỡ bỏ hoặc tắt Apache trước để tránh xung đột cổng 80.

## Hướng dẫn cài đặt (Từng bước)

Bước 1: Cập nhật hệ thống

Trước khi cài đặt bất kỳ phần mềm nào, chúng ta cần đồng bộ hóa danh sách gói và cập nhật các bản vá bảo mật mới nhất.

# Cập nhật danh sách gói từ repository
sudo apt update

# Nâng cấp các gói hiện có lên phiên bản mới nhất
sudo apt upgrade -y

Bước 2: Cài đặt Nginx

Nginx có sẵn trong kho lưu trữ mặc định của Ubuntu. Chúng ta sẽ sử dụng trình quản lý gói apt.

sudo apt install nginx -y

Bước 3: Cấu hình Firewall (UFW)

Để bảo mật, chúng ta chỉ cho phép các luồng giao thông cần thiết đi qua tường lửa.

# Xem danh sách các ứng dụng được đăng ký với tường lửa
sudo ufw app list

# Cho phép Nginx Full (bao gồm cả cổng 80 và 443)
sudo ufw allow 'Nginx Full'

# Kích hoạt tường lửa (nếu chưa bật - Hãy cẩn thận để không bị khóa SSH)
# sudo ufw enable

Bước 4: Thiết lập cấu hình Virtual Host (Server Block)

Đừng bao giờ sửa trực tiếp vào file /etc/nginx/nginx.conf. Cách quản trị chuyên nghiệp là tạo file riêng cho từng tên miền trong sites-available.

Giả sử tên miền của bạn là example.com:

# Tạo thư mục chứa dữ liệu web
sudo mkdir -p /var/www/example.com/html

# Phân quyền sở hữu cho user hiện tại (thay $USER bằng user của bạn hoặc www-data)
sudo chown -R $USER:$USER /var/www/example.com/html
sudo chmod -R 755 /var/www/example.com

# Tạo file cấu hình mới cho website
sudo nano /etc/nginx/sites-available/example.com

Dán nội dung cấu hình mẫu (đã tối ưu bảo mật cơ bản) sau đây:

server {
    listen 80;
    listen [::]:80;

    root /var/www/example.com/html;
    index index.html index.htm;

    server_name example.com www.example.com;

    # Cấu hình log riêng để dễ dàng theo dõi
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    # Bảo mật: Ngăn chặn chèn trang vào iframe (Clickjacking)
    add_header X-Frame-Options "SAMEORIGIN";
    # Bảo mật: Ngăn chặn thực thi script lạ
    add_header X-Content-Type-Options "nosniff";

    location / {
        try_files $uri $uri/ =404;
    }

    # Cấm truy cập vào các file ẩn như .htaccess hoặc .git
    location ~ /. {
        deny all;
    }
}

Kích hoạt cấu hình bằng cách tạo một liên kết (symlink) sang thư mục sites-enabled:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

# Xóa cấu hình mặc định nếu không dùng đến để tránh xung đột
sudo rm /etc/nginx/sites-enabled/default

## Kiểm tra hoạt động (Verify)

Sau khi cấu hình, tuyệt đối không restart Nginx ngay lập tức. Bạn phải kiểm tra cú pháp để tránh làm sập service.

# Kiểm tra lỗi cú pháp file cấu hình
sudo nginx -t

Nếu nhận được thông báo syntax is oktest is successful, bạn có thể an tâm khởi động lại:

# Tải lại cấu hình mà không làm gián đoạn kết nối hiện có
sudo systemctl reload nginx

# Kiểm tra trạng thái service
systemctl status nginx

Cách kiểm tra thực tế: Mở trình duyệt và truy cập vào IP của VPS hoặc tên miền đã cấu hình. Bạn sẽ thấy trang web của mình.


## Xử lý sự cố

Trong quá trình quản trị, bạn sẽ thường gặp các lỗi sau:

1. Lỗi 502 Bad Gateway

  • Nguyên nhân: Thường xảy ra khi Nginx làm Proxy ngược nhưng service phía sau (như PHP-FPM, Node.js) đang tắt hoặc lỗi.
  • Cách sửa: Kiểm tra service backend: sudo systemctl status php8.1-fpm (hoặc service tương ứng).

2. Lỗi 403 Forbidden

  • Nguyên nhân: Nginx không có quyền đọc thư mục code hoặc file index không tồn tại.
  • Cách sửa:
    # Đảm bảo www-data có quyền truy cập
    sudo chown -R www-data:www-data /var/www/example.com
    sudo chmod -R 755 /var/www/example.com

3. Lỗi 404 Not Found

  • Nguyên nhân: Sai đường dẫn trong cấu hình root hoặc file không tồn tại thực tế trên ổ cứng.
  • Cách sửa: Kiểm tra kỹ dòng root trong file cấu hình tại /etc/nginx/sites-available/.

4. Kiểm tra Log để tìm lỗi chính xác

Đây là kỹ năng quan trọng nhất của một Admin. Khi có lỗi, hãy đọc log:

# Xem 50 dòng lỗi mới nhất
sudo tail -n 50 /var/log/nginx/error.log

Lời khuyên cuối cùng: Luôn giữ hệ thống tối giản, chỉ cài đặt những gì cần thiết và luôn cập nhật bản vá (Security Patch) thường xuyên để bảo vệ server trước các cuộc tấn công.

See more: Hướng dẫn cài đặt Nginx trên VPS Ubuntu chi tiết.

Discover: Python Trick.

By admin

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *