1. Vì sao virtual host là cấu hình “xương sống” của Nginx?
Virtual host (trong Nginx gọi là server block) quyết định:
Domain nào trỏ vào website nào
Thư mục nào được phép truy cập
Log được ghi ra đâu
Cách request được xử lý
Nếu virtual host được cấu hình:
Vội vàng
Dùng cấu hình mẫu không hiểu rõ
Trộn nhiều website trong một file
thì hệ quả là:
Càng thêm website, cấu hình càng rối và rủi ro càng cao.
2. Nguyên tắc tạo virtual host cho production
Trong loạt bài này, virtual host được xây dựng theo các nguyên tắc:
Mỗi website → một file cấu hình riêng
Mỗi website → một thư mục web riêng
Có log riêng cho từng website
Không cấu hình PHP nếu chưa cần
Không bật SSL ở bước này (sẽ làm sau)
Nguyên tắc:
Virtual host đầu tiên phải đủ sạch để nhân bản cho các site sau.
3. Chuẩn bị trước khi tạo virtual host
Trước khi viết cấu hình, cần chuẩn bị:
Domain đã trỏ DNS về IP server
Thư mục web cho website
Quyền truy cập thư mục đúng
Ví dụ:
Tạo thư mục:
Gán quyền:
4. Tạo file cấu hình virtual host
4.1. Vị trí file cấu hình
Tạo file trong:
4.2. Nội dung cấu hình cơ bản
Ví dụ cấu hình HTTP chuẩn production (chưa PHP, chưa SSL):
4.3. Giải thích các thành phần quan trọng
listen 80: lắng nghe HTTPserver_name: domain của websiteroot: thư mục publicaccess_log,error_log: log riêngtry_files: tránh lộ file không tồn tại
Nguyên tắc:
Không dùng cấu hình mặc định cho production.
5. Kích hoạt virtual host
Tạo symlink:
6. Vô hiệu site mặc định (khuyến nghị)
Nếu chưa cần site mặc định của Nginx:
Điều này giúp:
Tránh truy cập nhầm site
Không lộ cấu hình mặc định
7. Kiểm tra cấu hình trước khi reload
Luôn kiểm tra cú pháp:
Chỉ khi thấy:
mới reload:
8. Kiểm tra hoạt động của virtual host
Truy cập:
Hoặc:
(nếu dùng hosts file để test)
Kiểm tra log:
9. Cấu trúc thư mục web – chuẩn production
Khuyến nghị:
Nginx chỉ trỏ vào public/, các thư mục khác không được truy cập từ web.
10. Những sai lầm phổ biến khi tạo virtual host
Dùng chung một thư mục cho nhiều site
Không có log riêng
Để root trỏ vào thư mục chứa file nhạy cảm
Copy cấu hình mà không đổi server_name
Những lỗi này:
Không gây sập ngay, nhưng gây lộ dữ liệu hoặc khó debug.
11. Checklist virtual host chuẩn production
File cấu hình riêng cho website
Thư mục web riêng
Root trỏ vào thư mục public
Log riêng
Site mặc định đã tắt
Test cấu hình trước khi reload
12. Bài tiếp theo
Trong Bài 16, chúng ta sẽ mở rộng thêm:
Quản lý nhiều website trên cùng một server
Bài này sẽ hướng dẫn:
Tổ chức cấu hình khi có nhiều domain
Tránh xung đột cấu hình
Chuẩn bị cho hệ thống lớn dần
- Đăng nhập để gửi ý kiến
