Cài Nginx trên Ubuntu và đưa website lên VPS: từ cài đặt đến HTTPS

  • author-image

    Nguyễn Đình Cường

  • blog-tag
  • blog-comment 0 comment
  • created-date 09 Nov, 2026
blog-thumbnail

Muốn website của bạn chạy trên máy chủ thật thay vì máy cá nhân? Nginx là máy chủ web phổ biến, nhẹ và nhanh. Bài này hướng dẫn bạn cài Nginx trên Ubuntu, cấu hình cho một website tĩnh, bật tường lửa cơ bản và cài chứng chỉ HTTPS miễn phí.

Chuẩn bị

Bạn cần một VPS chạy Ubuntu (bản LTS), một tài khoản có quyền sudo và tốt nhất là một tên miền trỏ về địa chỉ IP của VPS bằng bản ghi A. Kết nối vào máy chủ qua SSH:

ssh ten_nguoi_dung@dia_chi_ip

Lưu ý bảo mật căn bản: dùng tài khoản thường kèm sudo thay vì đăng nhập root, ưu tiên khóa SSH thay vì mật khẩu và luôn cập nhật hệ thống.

Bước 1: Cập nhật và cài Nginx

sudo apt update
sudo apt upgrade -y
sudo apt install nginx -y
sudo systemctl status nginx

Khi trạng thái hiện active (running), mở địa chỉ IP của VPS trong trình duyệt, bạn sẽ thấy trang chào mặc định của Nginx. Nếu không vào được, nguyên nhân thường là tường lửa của VPS hoặc nhà cung cấp chưa mở cổng 80.

Bước 2: Bật tường lửa UFW

Hãy cho phép SSH trước khi bật tường lửa, kẻo tự khóa mình ngoài máy chủ:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

Hồ sơ Nginx Full mở cả cổng 80 (HTTP) và 443 (HTTPS).

Bước 3: Tạo thư mục website

sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com
echo '<h1>Xin chào từ Nginx</h1>' > /var/www/example.com/html/index.html

Thay example.com bằng tên miền của bạn. Đặt mỗi website vào thư mục riêng giúp quản lý nhiều trang trên cùng một máy chủ.

Bước 4: Cấu hình server block

Server block tương tự "virtual host" của Apache. Tạo file cấu hình:

sudo nano /etc/nginx/sites-available/example.com

Nội dung:

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

    server_name example.com www.example.com;

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

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

Kích hoạt bằng cách tạo liên kết, kiểm tra cú pháp rồi nạp lại:

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

Luôn chạy nginx -t trước khi nạp lại, vì cấu hình sai có thể làm Nginx không khởi động được. Nếu muốn bỏ trang mặc định, xóa liên kết default trong sites-enabled.

Bước 5: Cài HTTPS với Let's Encrypt

Certbot giúp xin và tự gia hạn chứng chỉ miễn phí. Điều kiện: tên miền đã trỏ đúng về VPS.

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com

Làm theo hướng dẫn, chọn chuyển hướng HTTP sang HTTPS khi được hỏi. Certbot tự sửa file cấu hình và thiết lập gia hạn tự động. Kiểm tra bằng lệnh thử:

sudo certbot renew --dry-run

Xem log khi gặp sự cố

sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log

Các lỗi hay gặp:

  • 403 Forbidden: sai quyền thư mục hoặc thiếu file index.
  • 404 Not Found: sai đường dẫn root.
  • 502 Bad Gateway: Nginx làm proxy nhưng ứng dụng phía sau không chạy.
  • Không lấy được chứng chỉ: DNS chưa cập nhật hoặc cổng 80 bị chặn.

Dùng Nginx làm reverse proxy

Với ứng dụng Node.js hoặc Python chạy ở cổng nội bộ như 3000, đổi phần location thành:

location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Nginx nhận yêu cầu từ ngoài, chuyển cho ứng dụng và trả kết quả về, đồng thời đảm nhận HTTPS và file tĩnh.

Kết luận

Bạn đã đi từ máy chủ trống đến website có tên miền và HTTPS. Các bước cốt lõi là cài đặt, tường lửa, server block, kiểm tra cú pháp và chứng chỉ. Hãy tập thói quen sao lưu cấu hình và đọc log khi có lỗi.

Để học sâu hơn về triển khai và vận hành hệ thống, bạn có thể xem các khóa học DevOps tại codebem.com.

author_photo
Nguyễn Đình Cường

0 comment