Shared hosting thì dễ, nhưng VPS mang lại cho bạn tốc độ, quyền root và không bị "hàng xóm ồn ào" ảnh hưởng. Hướng dẫn này đưa một máy chủ Ubuntu 24.04 hoặc 22.04 mới tinh lên thành website HTTPS hoạt động bằng Nginx, trong khoảng hai mươi phút. Mọi lệnh đều có thể sao chép nguyên văn.
Bạn cần gì
- Một VPS có ít nhất 1 vCPU và 1 GB RAM (các gói cơ bản của chúng tôi là đủ cho hầu hết website nhỏ).
- Một tên miền đã trỏ về địa chỉ IP của máy chủ (xem hướng dẫn trỏ tên miền về VPS).
- Quyền truy cập SSH bằng người dùng sudo. Nếu máy chủ còn mới tinh, hãy tăng cường bảo mật cơ bản trước.
1. Cài đặt Nginx
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx
Mở địa chỉ IP của máy chủ trong trình duyệt. Bạn sẽ thấy trang chào mừng mặc định của Nginx. Nếu không, hãy kiểm tra xem tường lửa có cho phép cổng 80 và 443 hay không:
sudo ufw allow "Nginx Full"
sudo ufw status
2. Tạo thư mục cho website
sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com
echo "<h1>It works</h1>" > /var/www/example.com/html/index.html
Hãy thay example.com bằng tên miền của bạn ở mọi chỗ.
3. Thêm một server block
sudo nano /etc/nginx/sites-available/example.com
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 nó, kiểm tra cấu hình rồi tải lại:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
4. Thêm HTTPS miễn phí với Let's Encrypt
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot sẽ sửa server block của bạn, chuyển hướng HTTP sang HTTPS và cài một timer để tự động gia hạn chứng chỉ. Kiểm tra timer bằng systemctl list-timers | grep certbot.
5. Làm cho nhanh hơn
Bật nén và bộ nhớ đệm của trình duyệt cho các tệp tĩnh. Thêm đoạn này vào bên trong khối server:
gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;
location ~* \.(css|js|png|jpg|jpeg|webp|svg|woff2)$ {
expires 30d;
add_header Cache-Control "public";
}
Sau đó hãy tải lại Nginx. Với các website động như WordPress, hãy cài PHP-FPM và chuyển các yêu cầu .php cho nó, hoặc đặt một plugin cache phía trước.
Các sự cố thường gặp
- 403 Forbidden: Nginx không đọc được thư mục. Hãy kiểm tra quyền sở hữu và đảm bảo mọi thư mục cha đều có quyền thực thi (
chmod o+x). - Certbot báo lỗi: tên miền chưa trỏ về máy chủ, hoặc cổng 80 đang bị chặn.
- Vẫn hiện trang mặc định: hãy xóa
/etc/nginx/sites-enabled/defaultrồi tải lại.