Skip to content
VDS · Website và máy chủ web

Nhiều site trên một máy chủ

Cách host hàng chục site trên một VPS: bố cục thư mục, cấu hình và người dùng riêng, chứng chỉ dùng chung, và ước lượng tải theo tier.

Cập nhật 23 tháng 8, 2026

Một địa chỉ IPv4 công khai duy nhất có thể phục vụ bất kỳ số lượng tên miền nào: máy chủ web định tuyến yêu cầu dựa trên header Host. Giới hạn không nằm ở số địa chỉ — mà ở bộ nhớ và dung lượng đĩa của gói bạn dùng.

Bố cục

Hãy giữ một mẫu duy nhất, nếu không thì sáu tháng nữa bạn sẽ không biết trang nào thuộc về ai:

/var/www/example.ru/public
/var/www/example.ru/logs
/var/www/shop.ru/public
/var/www/shop.ru/logs

Giữ một tệp cấu hình riêng cho mỗi trang: /etc/nginx/sites-available/<domain>, kích hoạt qua một symlink trong sites-enabled. Khi đó, vô hiệu hóa một trang chỉ cần xóa một symlink và tải lại, thay vì phải đi tìm đúng đoạn cấu hình trong một tệp dùng chung.

Cấu hình

server {
    listen 80;
    server_name example.ru www.example.ru;
    root /var/www/example.ru/public;
    index index.html index.php;
    access_log /var/www/example.ru/logs/access.log;
}

Hãy thiết lập thêm một “trang bắt tất cả” cho các tên miền không xác định, nếu không thì cấu hình đầu tiên theo thứ tự bảng chữ cái sẽ mở ra cho bất kỳ tên miền của bên thứ ba nào trỏ đến địa chỉ của bạn:

server {
    listen 80 default_server;
    server_name _;
    return 444;
}

Tách quyền

Nếu các trang thuộc về những khách hàng khác nhau hoặc những dự án khác nhau, đừng cấp cho chúng một người dùng chung: nếu không, một lỗ hổng trong một script sẽ đồng nghĩa với quyền truy cập vào tất cả.

useradd -r -d /var/www/example.ru -s /usr/sbin/nologin site-example
chown -R site-example:www-data /var/www/example.ru
chmod 750 /var/www/example.ru

Với PHP, hãy tạo một pool FPM riêng cho mỗi trang với user và listen riêng — xem PHP-FPM. Cũng hãy tách riêng cơ sở dữ liệu của bạn: người dùng và quyền.

Chứng chỉ

Một lần chạy certbot duy nhất bao phủ nhiều tên miền cùng lúc:

certbot --nginx -d example.ru -d www.example.ru -d shop.ru -d www.shop.ru

Việc gia hạn được dùng chung, chỉ một timer. Chi tiết — Let's Encrypt.

Bao nhiêu trang sẽ vừa

Hãy tính theo bộ nhớ, không phải theo số lượng tên miền. Một trang tĩnh gần như không tốn gì; một trang CMS có cơ sở dữ liệu tốn hàng trăm megabyte.

GóiBộ nhớHướng dẫn
VDS-1 (2 GB)2 GB1–2 trang CMS hoặc một tá trang tĩnh
VDS-2 (4 GB)4 GB3–5 trang CMS
VDS-3 (8 GB)8 GB8–12 trang CMS

Dung lượng đĩa cũng có hạn: 40 GB trên VDS-1, 250 GB trên VDS-6. Bạn chỉ có thể nâng cấp gói, trả phần chênh lệch cho những ngày còn lại của kỳ đã thanh toán.

Lỗi thường gặp

Triệu chứngNguyên nhân
Tất cả tên miền đều hiển thị cùng một trangserver_name không khớp, nên block đầu tiên đã xử lý yêu cầu
Log của tất cả các trang nằm trong một tệpaccess_log không được đặt trong block của trang
Một trang làm sập tất cảPool PHP-FPM dùng chung không có giới hạn
Hết dung lượng đĩaLog và bản sao lưu trên cùng một đĩa — hãy thiết lập logrotate

Trước khi thêm một trang mới, hãy kiểm tra biểu đồ bộ nhớ của tuần qua trong “Tổng quan” của bảng điều khiển tại /hosting/vds/m/<id>. Nếu mức đỉnh đã chạm trần, thì trang mới sẽ là nguyên nhân gây crash, chứ không phải là hệ quả.