Trong bối cảnh các doanh nghiệp ngày càng sở hữu nhiều website, việc quản lý chúng trở nên phức tạp hơn. Giải pháp Virtual Hosts trên Apache ra đời để giải quyết vấn đề này. Thay vì phải đầu tư vào nhiều máy chủ vật lý, Virtual Hosts cho phép bạn chạy nhiều trang web trên cùng một máy chủ, giúp tiết kiệm chi phí và tối ưu hóa tài nguyên.
Bạn đang quản lý nhiều website trên cùng một máy chủ và muốn tối ưu hóa tài nguyên? Virtual Hosts là giải pháp hoàn hảo dành cho bạn. Bài viết này Terus sẽ hướng dẫn bạn cách cấu hình và quản lý nhiều website khác nhau trên Apache, từ đó giúp bạn tiết kiệm chi phí và tăng hiệu quả quản lý.

I. Virtual Hosts là gì?
Virtual Hosts là thuật ngữ chỉ việc bạn có thể quản lý nhiều trang web ngay trên một máy chủ web duy nhất. Việc sử dụng Virtual Hosts sẽ giúp bạn chạy nhiều trang web khác nhau trên cùng một máy chủ duy nhất, mỗi website sẽ có vùng riêng để lưu trữ nhưng mang cùng 1 địa chỉ IP.
Virtual Host cho phép chia tách các trang web khác nhau trên cùng một máy chủ. Khi một yêu cầu được gửi đến, máy chủ sẽ phân tích tên miền và địa chỉ IP để xác định chính xác trang web cần truy cập, từ đó cung cấp nội dung phù hợp cho từng người dùng.
Virtual Hosts là giải pháp tối ưu để vận hành nhiều trang web khác nhau trên cùng một máy chủ, mang đến sự linh hoạt và tiết kiệm chi phí cho các dự án web.
II. Lợi ích sử dụng Virtual Hosts
Việc sử dụng Virtual Hosts sẽ giúp bạn tối ưu chi phí và giúp bạn quản lý được nhiều website cùng một lúc, một số lợi ích của Virtual Hosts:
- Giúp quản lý nhiều thư mục: Tính năng làm việc trực tiếp với thư mục mã nguồn giúp bạn tự do tổ chức dự án theo cách bạn muốn, không bị giới hạn bởi cấu trúc thư mục mặc định.
- Tiết kiệm nhiều thời gian để sao lưu: Khi các website đã được phân vùng lưu trữ từ trước việc thay đổi của host sẽ không làm thiệt hại đến dữ liệu mã nguồn, giúp bạn tiết kiệm thời gian
III. Ưu và nhược điểm của Virtual Host
Virtual Hosts có những ưu điểm và nhược điểm riêng. Dưới đây là một số ưu và nhược điểm phổ biến của Virtual Hosts:

Ưu điểm Virtual Host
- Tiết kiệm tài nguyên: Việc chạy được nhiều website trên cùng 1 host sẽ giúp tối ưu tài nguyên trên máy chủ của bạn.
- Khả năng linh hoạt: Virtual Hosts cho phép bạn quản lý và triển khai nhiều website từ đơn giản đến phức tạp
- Chia lưu lượng truy cập: Với tần suất của nhiều website cộng lại sẽ cải thiện hiệu suất và độ tin cậy cho đối thủ.
Nhược điểm của Virtual Hosts:
- Sự bảo mật: Nếu bạn không cấu hình đúng sẽ dễ gây ra sự xung đột giữa các website với nhau, điều này sẽ gây tổn thất hàng hoạt.
- Hiệu suất có thể bị ảnh hưởng: Nếu một hoạt nhiều website bị tấn công DDOS thì chắc chắn toàn bộ website trong Virtual Hosts sẽ bị ảnh hưởng nặng nề.
- Rất khó quản lý: yêu cầu bạn phải có nhiều kinh nghiệm và khả năng xử lý tình huống nhanh chóng khi có sự cố xảy ra
- Khó khăn về hệ thống: Với những website đòi sự tương thích của máy chủ hoặc nhiều ứng dụng không thể tương thích khi chia sẻ server, điều này buộc bạn phải dùng giải pháp khác.
IV. Phân biệt Server, Host, Virtual Host và VPS
Server | Host | Virtual | Host VPS | |
Định nghĩa | Máy tính hoặc thiết bị cung cấp dịch vụ | Hệ thống kết nối mạng để chia sẻ tài nguyên | Một máy chủ vật lý phục vụ nhiều website khác nhau | Máy chủ ảo được tạo ra từ một máy chủ vật lý |
Chức năng | Cung cấp dịch vụ, lưu trữ dữ liệu | Lưu trữ website, ứng dụng | Chia sẻ tài nguyên máy chủ | Hoạt động như một máy chủ độc lập |
Ví dụ | Máy chủ web, máy chủ email, máy chủ cơ sở dữ liệu | Web host, cloud host | Nhiều website trên cùng một IP | Máy chủ ảo cho một website hoặc ứng dụng |
Cấu hình | Cấu hình phần cứng và phần mềm | Cấu hình thấp hơn, thường được nhà cung cấp quản lý | Cấu hình linh hoạt hơn | Cấu hình tương tự như máy chủ vật lý |
Tài nguyên | Có thể chia sẻ hoặc riêng biệt | Thường chia sẻ với các khách hàng khác | Tài nguyên được phân chia từ máy chủ vật lý | Tài nguyên riêng biệt, được đảm bảo |
Chi phí | Cao nhất | Thấp nhất | Trung bình | Trung bình đến cao |
V. Cách thức hoạt động của Virtual Host
Cách thức vận hành của Virtual Hosts phụ thuộc vào loại máy chủ web và hệ thống quản lý máy chủ bạn đang sử dụng. Dưới đây là một phương pháp chung để cấu hình và vận hành Virtual Hosts trên một máy chủ web.
Cách mà Virtual Host hoạt động sẽ còn phụ thuộc vào loại máy chủ và cách mà bạn quản lý, tôi sẽ giới thiệu cho bạn cách mà hoạt động phổ biến nhất:
1. Cấu hình DNS
Để bắt đầu bạn sẽ cần phải cấu hình DNS để đinh tuyến các tên miền tới địa chỉ IP của máy chủ. Ngoài ra, bạn có thể thêm các các bản DNS A hoặc CNAME tùy theo ý của bạn.
2. Cấu hình máy chủ web

Để website của bạn hoạt động ổn định và hiệu quả, việc cấu hình máy chủ web để xử lý các yêu cầu từ nhiều tên miền khác nhau là vô cùng quan trọng. Tùy thuộc vào loại máy chủ bạn đang sử dụng, bạn sẽ cần chỉnh sửa các tập tin cấu hình tương ứng như httpd.conf (Apache) hoặc nginx.conf (Nginx).
3. Xác định Virtual Hosts
Mỗi tên miền trên máy chủ web sẽ được cấu hình riêng biệt thông qua các Virtual Host. Cấu hình này bao gồm thông tin chi tiết về tên miền, địa chỉ IP, thư mục chứa website và các thiết lập bảo mật, giúp tùy chỉnh trải nghiệm người dùng cho từng domain.
4. Thiết lập

Mỗi Virtual Host trong Nginx cho phép bạn tùy chỉnh các thiết lập một cách linh hoạt, từ việc cấu hình SSL/TLS, bảo mật, xác thực người dùng, quản lý phiên cho đến các tùy chọn nâng cao khác, đáp ứng mọi yêu cầu của ứng dụng web của bạn.
5. Khởi động lại để cập nhật mới nhất
Để các cấu hình Virtual Hosts mới được áp dụng, bạn cần khởi động lại máy chủ web. Sau khi khởi động lại, các yêu cầu truy cập sẽ được định tuyến chính xác đến từng Virtual Host tương ứng, đảm bảo trang web hiển thị đúng nội dung.
Cấu hình Virtual Hosts có thể khác nhau tùy thuộc vào từng loại máy chủ web (Apache, Nginx, IIS, Caddy,...) mà bạn sử dụng. Để đảm bảo chính xác, hãy tham khảo tài liệu hướng dẫn chi tiết của từng nền tảng.
VI. Hướng dẫn chi tiết cách tạo nhiều Virtual Host trên Apache
Để tạo nhiều Virtual Host trên máy chủ web Apache, bạn cần thực hiện các bước sau:
Bước 1: Chuẩn bị sẵn sàng
- Tên miền: Đảm bảo bạn đã đăng ký tên miền và biết địa chỉ IP của máy chủ Apache.
- Máy chủ Apache: Kiểm tra xem Apache đã được cài đặt và đang hoạt động bình thường chưa.
Bước 2: Tạo cấu hình Virtual Host
- Mở tệp cấu hình: Tìm và mở tệp cấu hình Apache (httpd.conf hoặc apache2.conf). Tệp này thường nằm trong thư mục /etc/apache2/.
- Tạo khối cấu hình: Thêm một khối <VirtualHost> mới vào cuối tệp cấu hình. Mỗi khối sẽ đại diện cho một website riêng.
- Điền thông tin:
- ServerName: Điền tên miền của website vào đây.
- DocumentRoot: Chỉ đường dẫn đến thư mục chứa các tệp của website.
- Các tùy chọn khác: Bạn có thể tùy chỉnh các tùy chọn khác như quyền truy cập, nhật ký lỗi, v.v.
Ví dụ:
<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot /var/www/html/yourdomain
<Directory /var/www/html/yourdomain>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/yourdomain-error.log
CustomLog /var/log/apache2/yourdomain-access.log combined
</VirtualHost>
Bước 3: Lặp lại cho các website khác
- Sao chép: Sao chép khối cấu hình trên và thay đổi các thông tin tương ứng cho từng website.
- Lưu lại: Lưu tệp cấu hình Apache.
Bước 4: Khởi động lại Apache
- Sử dụng lệnh: Khởi động lại Apache để áp dụng các thay đổi.
- Ubuntu/Debian: sudo systemctl restart apache2
- CentOS/Fedora: sudo systemctl restart httpd
Bước 5: Cấu hình DNS
- Thêm bản ghi: Thêm bản ghi A hoặc CNAME vào DNS của tên miền để trỏ đến địa chỉ IP của máy chủ.
Hoàn thành các bước trên là bạn đã thành công tạo Virtual Host.
VII. Hướng dẫn chi tiết cách cấu hình Virtual Host Apache CentOS 7
Bạn sẽ cần làm các bước sau để cấu hình Virtual Host Apache CentOS 7
Bước 1. Chuẩn bị:
- Đảm bảo đã cài đặt Apache: Nếu chưa, hãy chạy lệnh sudo yum install httpd để cài đặt.
- Khởi động dịch vụ Apache: sudo systemctl start httpd
Bước 2. Cấu hình Virtual Host:
- Mở tệp cấu hình: sudo vi /etc/httpd/conf/httpd.conf
- Bỏ comment dòng NameVirtualHost: Tìm dòng #NameVirtualHost *:80 và xóa dấu # ở đầu dòng.
- Thêm khối cấu hình Virtual Host: Thêm các khối <VirtualHost> cho từng website bạn muốn tạo, ví dụ:
<VirtualHost *:80>
ServerName yourdomain.com
DocumentRoot /var/www/html/yourdomain
ErrorLog /var/log/httpd/yourdomain-error.log
CustomLog /var/log/httpd/yourdomain-access.log combined
</VirtualHost>
- Giải thích các tham số:
- ServerName: Tên miền của website.
- DocumentRoot: Đường dẫn đến thư mục chứa nội dung website.
- ErrorLog, CustomLog: Đường dẫn đến file log lỗi và log truy cập.
Bước 3. Cấp quyền cho thư mục website:
- Sở hữu: sudo chown -R apache:apache /var/www/html/yourdomain
- Quyền truy cập: sudo chmod -R 755 /var/www/html/yourdomain
Bước 4. Khởi động lại Apache: sudo systemctl restart httpd
Bước 5. Cấu hình DNS: Đảm bảo tên miền trỏ đến địa chỉ IP của máy chủ.
VIII. Khi nào thì nên sử dụng Virtual Host
Dưới đây là một số trường hợp mà bạn nên dùng Virtual Host:
1. Shared Hosting
Virtual Host là giải pháp tối ưu để quản lý nhiều website trên cùng một máy chủ, giúp bạn tiết kiệm chi phí và tăng hiệu suất hoạt động mà vẫn đảm bảo tính độc lập cho từng website.
2. Chạy kiểm tra

Virtual Host tạo ra các môi trường làm việc riêng biệt cho từng dự án, giúp các lập trình viên phát triển và kiểm thử ứng dụng một cách độc lập, không lo ảnh hưởng đến các dự án khác, đảm bảo tính bảo mật và ổn định cho hệ thống
3. Hỗ trợ nhiều dự án với vai trò là nhà cung cấp dịch vụ
Virtual Host là giải pháp tối ưu cho các nhà cung cấp dịch vụ web, giúp quản lý nhiều website trên cùng một máy chủ vật lý một cách hiệu quả. Với Virtual Host, bạn có thể phân chia tài nguyên máy chủ cho từng khách hàng, tiết kiệm chi phí và tăng cường hiệu suất.
4. Triển khai đa ứng dụng

Virtual Host là giải pháp tối ưu để quản lý nhiều phiên bản của một ứng dụng trên cùng một máy chủ. Nhờ Virtual Host, bạn có thể dễ dàng chuyển đổi giữa các môi trường phát triển, thử nghiệm và sản xuất mà không cần cấu hình phức tạp, tiết kiệm thời gian và tài nguyên.
5. Tạo subdomain
Virtual Host là giải pháp hoàn hảo để quản lý nhiều website khác nhau trên cùng một máy chủ. Bạn có thể dễ dàng tạo các subdomain riêng biệt, mỗi subdomain sẽ có cấu hình và nội dung độc lập, đáp ứng nhu cầu đa dạng của doanh nghiệp.
6. CMS

Virtual Host kết hợp với các CMS như WordPress, Joomla hay Drupal là giải pháp hoàn hảo để quản lý nhiều website trên cùng một server. Mỗi website sẽ có một môi trường làm việc độc lập, giúp bạn dễ dàng quản lý và tùy biến nội dung.
7. Xây dựng website đa ngôn ngữ
Virtual Host là giải pháp hoàn hảo để tạo ra những trải nghiệm trực tuyến riêng biệt cho từng nhóm đối tượng khách hàng. Mỗi tên miền sẽ mang đến một giao diện và nội dung được tùy chỉnh theo ngôn ngữ và sở thích của người dùng, giúp tăng cường sự tương tác và lòng trung thành.
Bài viết đã giới thiệu về Virtual Hosts trên Apache - một giải pháp hiệu quả để vận hành nhiều website trên cùng một máy chủ. Nhờ Virtual Hosts, chúng ta có thể tiết kiệm tài nguyên máy chủ, tối ưu hóa chi phí và linh hoạt quản lý nhiều dự án web khác nhau. Chúng ta đã cùng nhau khám phá cách cấu hình Virtual Hosts trên CentOS 7, từ đó hiểu rõ hơn về cơ chế hoạt động và cách áp dụng vào thực tế.
Virtual Hosts là một công cụ hữu ích giúp chúng ta quản lý nhiều website trên cùng một máy chủ, tối ưu hóa tài nguyên và tăng tính linh hoạt. Tuy nhiên, việc cấu hình và quản lý Virtual Hosts đòi hỏi sự cẩn trọng để đảm bảo bảo mật và hiệu suất tối ưu.
FAQ - Giải đáp thắc mắc liên quan đến Virtual Hosts
1. Virtual Host default là cổng nào?
Cổng mặc định của Virtual Host thường là 80.
2. Làm sao để config virtual host Apache?
Tạo thư mục cho từng website:
- Mỗi website sẽ có một thư mục riêng để chứa các tệp tin của nó. Ví dụ: /var/www/example1.com và /var/www/example2.com.
- Cấp quyền cho thư mục: sudo chown -R $USER:$USER /var/www/example1.com
Tạo tệp cấu hình Virtual Host:
- Mở file cấu hình
/etc/apache2/sites-available/yourdomain.conf
. - Viết các thông tin cấu hình vào file này, bao gồm:
- ServerName: Tên miền của website.
- ServerAlias: Các tên miền khác (nếu có).
- DocumentRoot: Thư mục chứa các tệp của website.
- ErrorLog: File log để ghi lại lỗi.
- CustomLog: File log để ghi lại truy cập.
Kích hoạt Virtual Host:
- Liên kết tệp cấu hình: sudo a2ensite yourdomain.com.conf
- Vô hiệu hóa Virtual Host mặc định: sudo a2dissite 000-default.conf
- Khởi động lại Apache: sudo systemctl restart apache2
Cấu hình DNS:
- Đảm bảo tên miền của bạn trỏ đến địa chỉ IP của máy chủ.