Virtual Host là gì?

Virtual host là một khái niệm liên quan đến máy chủ web. Nó cho phép bạn chạy nhiều trang web trên cùng một máy chủ vật lý thông qua việc sử dụng tên miền và địa chỉ IP khác nhau. Bằng cách sử dụng Virtual Host, bạn có thể chạy nhiều trang web trên cùng một máy chủ mà không phải lo lắng về việc chúng xung đột với nhau.

Cách tạo 2 website trên 1 host với Virtual Host

Cài đặt

  • Cài đặt Apache server

    sudo apt-get update sudo apt-get install apache2

  • Sau khi cài đặt thành công apache server thì thư mục làm việc với apache mặc định là /var/www/html, giờ chúng ta cần tạo một folder chứa project demo của chúng ta ở đây mình đặt tên là myproject, sau đó tạo một file index.html trong myproject.com với nội dung đơn giản để chạy thử

    /var/www/myproject/index.html

    • Kết quả của mình sẽ như sau hình ảnh

Tạo thư mục cho website

Tiếp theo, tạo hai thư mục riêng biệt cho từng website của bạn. Thư mục này sẽ chứa các tệp tin của website, bao gồm các file HTML, CSS, JavaScript và hình ảnh.

Cấu hình Virtual Host

Để cấu hình Virtual Host, bạn cần phải sửa đổi file cấu hình của máy chủ web. Trong ví dụ này, ta sử dụng Apache, file cấu hình của Apache được lưu trữ tại /etc/httpd/conf/httpd.conf trên hệ thống Linux.

Thêm các dòng sau vào cuối file cấu hình httpd.conf:

DocumentRoot /var/www/website1 ServerName www.website1.com DocumentRoot /var/www/website2 ServerName www.website2.com

Trong đó, website1.com và website2.com là tên miền của từng website mà bạn muốn tạo. Điều này cho phép máy chủ web biết khi nào phải hiển thị trang web nào dựa trên tên miền được yêu cầu.

Kích hoạt Virtual Host

Sau khi đã tạo Virtual Host, bạn cần kích hoạt nó bằng cách sử dụng lệnh sau:

sudo a2ensite myproject.conf

Sau khi lệnh này được thực hiện file myproject.conf sẽ được copy từ /etc/apache2/site-available/myproject.conf sang /etc/apache2/site-enable/myproject.conf

Restart apache server

sudo service apache2 restart

Bạn cần thay thế “yourdomain.com.conf” bằng tên tệp cấu hình Virtual Host mà bạn đã tạo.

Đăng ký DNS

  • Việc khá quan trọng đó là bạn cần phải khai báo tất cả các tên miền bạn muốn dùng với Apache trong máy chủ DNS.
  • Nếu bạn chỉ khai báo thoải mái các tên khác nhau trong .conf (hay apache.conf) mà trong máy chủ DNS không hề có thông tin của các tên thì người dùng sẽ không thấy được trang web của bạn.
  • Ví dụ có một tên miền đã được đăng ký online nghĩa là sử dụng external network bạn đặt một tên như vậy thì khi truy cập vào tên miền đó request bạn gửi đi sẽ tới server online kia và trả lại trang web bạn không mong muốn, nhưng khi đăng ký DNS local thì việc sử dụng internal network khi truy cập vào tên miền của bạn nó sẽ tìm kiếm trong host local trước
  • Mở file /etc/hosts và thêm vào một dòng như sau  yourdomain.com(ở đây là myproject.dev) sudo nano /etc/hosts hình ảnh
  • Ok giờ bạn restart server apache và truy cập vào đường dẫn theo tên miền mà bạn đã config ở đây mình để là myproject.dev

Tạo trang web thứ hai

Bây giờ, bạn đã có thể tạo trang web thứ hai trên cùng một máy chủ bằng cách lặp lại các bước trên. Nhưng lần này, bạn cần sử dụng tên miền khác và đường dẫn khác cho DocumentRoot.

Khởi động lại Apache2

Cuối cùng, bạn cần khởi động lại Apache2 để áp dụng các thay đổi:

sudo service apache2 restart

Xem Thêm