Virtual Host là một khái niệm kỹ thuật trong công nghệ máy chủ web cho phép một máy chủ duy nhất chạy và quản lý nhiều trang web và tên miền khác nhau. Cùng TotHost tìm hiểu kỹ hơn trong bài viết sau đây nhé.
Nhờ Virtual Host, các trang web không liên quan có thể chia sẻ cùng một máy chủ vật lý một cách hiệu quả. Có ba phương pháp chính để thực hiện Virtual Host: dựa trên địa chỉ IP, dựa trên số Port và dựa trên tên miền, mỗi phương pháp đều có cách tiếp cận và ưu điểm riêng. Điều này giúp tối ưu hóa tài nguyên máy chủ và quản lý các trang web đa dạng trên cùng một hạ tầng máy chủ.
1. Virtual Host là gì?
Virtual Host (hoặc Virtual Hosting) là một phương thức cho phép một web server (ví dụ như Apache, Nginx) lưu được nhiều domain khác nhau trên cùng một máy chủ. Cụ thể hơn, một máy chủ web sẽ được cấu hình để phản hồi với các yêu cầu từ nhiều tên miền hoặc địa chỉ IP khác nhau và hiển thị các trang web khác nhau tương ứng với từng yêu cầu.
Đây được coi là giải pháp tiết kiệm chi phí bởi có thể sử dụng nhiều tên miền chỉ trên một Server. Ngoài ra còn có một số ưu điểm nổi bật như:
- User có thể dễ dàng truy cập vào bất kỳ mục lưu trữ Code mà không phải copy code vào htdocs trong giao diện Xampp.
- Trong quá trình thiết lập ban đầu, nếu phân vùng lưu trữ code ở một Folder Code nhất định thì khi cài lại hệ điều hành Windows sẽ không phải sao lưu đồng bộ dữ liệu trong Folder Code.
2. Ba loại Virtual Host
- IP based: So với 3 phương pháp thì đây là phương pháp đơn giản được nhiều người áp dụng nhất. Bởi vì một IP sử dụng cho 1 Website nên chính vì vậy mà máy chủ web sẽ chịu trách nhiệm ánh xạ IP được yêu cầu có đến đúng website mong muốn hay không. Và nhằm tránh những vấn đề không đáng có cho website có liên quan tới địa chỉ IP, mỗi trang web sẽ được định nghĩa bởi 1 IP duy nhất. Tuy nhiên nhược điểm của IP-Based là đòi hỏi người dùng cần thiết lập Virtual Interface trên 1 máy chủ. Bởi chỉ có thể làm như vậy, bạn mới có thể sử dụng được nhiều IP.
- Port-based: Port Based tương đương và có khá nhiều điểm tương đồng so với IP-Based. Tuy nhiên điểm khác biệt lớn nhất giữa 2 phương thức này là Port Based có thể quản lý nhiều website dựa theo số Port được định nghĩa cùng với IP hoặc tên miền. Bên cạnh đó Port sử dụng còn tránh lặp lại với Port được mặc định của ứng dụng khác khi đang hoạt động.
- Name based: Máy chủ ảo dựa trên tên sử dụng địa chỉ IP duy nhất cho tất cả các miền trên máy chủ nhất định. Khi trình duyệt đang cố gắng kết nối với máy chủ, nó sẽ gửi một thông báo tới máy chủ thông báo về tên miền mà nó đang cố gắng kết nối. Khi tên miền được cung cấp thì máy chủ sẽ tiến hàng kiểm tra cấu hình máy chủ lưu trữ. Và từ đó sẽ trả về yêu cầu với trang web chính xác.
![Virtual Host là gì?](https://tothost.vn/wp-content/uploads/2023/11/Virtual_1080x1080-1024x1024.png)
3. Cách tạo Virtual Host với Apache
3.1. Apache là gì?
Apache là một web server sử dụng open source rất phổ biến hiện nay, nó phục vụ chủ yếu cho các trang web và ứng dụng web. Apache là một phần mềm máy chủ HTTP, có khả năng xử lý các yêu cầu HTTP từ máy tính của người dùng và gửi lại trang web hoặc dữ liệu tương ứng. Web server này thường được kết hợp với các ngôn ngữ lập trình như PHP, Python, hoặc Ruby để xây dựng các ứng dụng web động.
Đọc thêm về Apache: Apache là gì? | Tổng hợp kiến thức về Web Server Apache mới nhất 2023
3.2. Hướng dẫn tạo Virtual Host trên Apache
Yêu cầu: Bạn cần phải có hệ điều hành Ubuntu và đã cài đặt Apache, nếu bạn chưa cài thì hãy làm theo các bước sau:
sudo apt-get update
sudo apt-get install apache2
a. Tạo thư mục lưu trữ website
Trước tiên, điều quan trọng nhất mà bạn cần làm là tạo ra hai thư mục để chứa tập tin và dữ liệu của hai website. Ví dụ như mặc định Apache sử dụng /var/www làm thư mục chủ. Và chúng ta sẽ tiến hàng sẽ tạo ra hai thư mục ở đó để lưu trữ dữ liệu cho hai website. Bạn có thể tạo thư mục ở bất kỳ đâu mà bạn muốn, cụ thể trong trường hợp này, chúng tôi sẽ tạo ra 2 thư mục là:
/var/www/tothost1.com và /var/www/tothost2.com
Thường người ra chỉ sử dụng một thư mục con để lưu trữ dữ liệu nhằm xử lý trang web cho người truy cập là public_html. Điều này nhằm mục đích chính là phục vụ việc lưu trữ dữ liệu một cách linh hoạt. Theo đó thì bạn hoàn toàn có thể lưu dữ liệu chỉ dành cho admin ở một thư mục khác.
Để tạo 2 thư mục thì bạn có thể áp dụng 2 lệnh như sau:
$ sudo mkdir -p /var/www/tothost1.com/public_html
$ sudo mkdir -p /var/www/tothost2.com/public_html
b. Tạo tập tin để cấu hình Virtual Host với phần mềm Apache
Kế tiếp bạn cần tạo tập tin để cấu hình Virtual Host với phần mềm Apache. Theo đó trên Ubuntu, các tập tin cấu hình virtual host của Apache sẽ nằm ở trong thư mục /etc/apache2/sites-available. Và cũng tại đây, bạn sẽ nhìn thấy được hai virtual host mặc định là 000-default.conf và default-ssl.conf.
Để kiểm tra các virtual host có sẵn thì bạn có thể áp dụng theo lệnh sau:
$ ls -l /etc/apache2/sites-available
Sau đó bạn tiến hành sao chép 2 virtual host mặc định cho hai tên miền mới là:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/tothost1.com.conf
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/tothost2.com.conf
Bước tiếp theo là mở và chỉnh sửa tập tin cấu hình:
$ sudo nano /etc/apache2/sites-available/tothost1.com.conf
Những thông tin cần phải cấu hình lại gồm có:
- ServerName: Tại đây, bạn cần sở hữu lại domain của mình. Ví dụ ở trên, chúng tôi đang để tothost1.com. Theo đó tên này bạn hoàn toàn có thể thay thế để phù hợp hơn với thương hiệu của mình.
- ServerAdmin: Thêm email của bạn cho domain này.
- DocumentRoot: Thư mục này sẽ lưu trữ trang web mà bạn đã tạo ở trên. Và trong trường hợp ở trên là /var/www/tothost1.com/public_html
- ServerAlias: Theo mặc định thì sẽ không có mục này. Tuy nhiên bạn cũng hoàn toàn có thể thêm nó ở phía dưới ServerName.
Sau khi hoàn tất việc tạo tập tin để cấu hình Virtual Host thứ nhất thì bạn lưu lại và tiếp tục mở tập tin virtual host thứ 2:
$ sudo nano /etc/apache2/sites-available/tothost2.com.conf
Và đối với tập tin thứ 2 thì cách thực hiện cũng tương tự như tập tin thứ nhất.
c. Bật Virtual Host để các cấu hình vừa cài đặt bắt đầu hoạt động
Để bật Virtual Host thì bạn có thể sử dụng lệnh sau:
$ sudo a2ensite tothost1.com.conf
$ sudo a2ensite tothost2.com.conf
Sau đó tiến hành khởi động lại máy chủ web Apache theo lệnh:
$ sudo service apache2 restart
Trong quá trình khởi động, một số trường hợp là bạn sẽ gặp thông báo sau: “AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1. Set the ‘ServerName’ directive globally to suppress this message”. Tuy nhiên bạn cũng đừng quá lo lắng về thông báo này. Bởi nó không ảnh hưởng gì tới website của bạn đâu nhé!
d. Kiểm tra sự hoạt động của Virtual Host vừa tạo trên Apache
Sau khi hoàn tất các bước trên thì bạn cần kiểm tra lại xem việc tạo virtual host trên Apache xem đã đúng chưa. Để có thể kiểm tra được sự hoạt động của Virtual Host thì bạn cần phải tạo 2 tập tin và chạy nó trên trình duyệt. Tạo tập tin index.html trong:
/var/www/tothost1.com/public_html
/var/www/tothost2.com/public_html
Theo đó bạn có thể áp dụng lệnh như sau:
$ sudo nano /var/www/tothost1.com/public_html/index.html
$ sudo nano /var/www/tothost2.com/public_html/index.html
Cuối cùng là bạn trỏ domain về IP của server. Và sau khi DNS được cập nhật thì bạn truy cập vào địa chỉ tothost1.com và tothost2.com xem có được không. Trong trường hợp nếu như bạn tìm thấy website hiển thị đúng như hình bên dưới thì việc thêm domain vào VPS của bạn đã thành công.
Lời kết
Trên đây là toàn bộ thông tin về Virtual Host là gì, chi tiết cách tạo Virtual Host trên Apache mà Tothost muốn chia sẻ tới bạn đọc. Hy vọng qua những chia sẻ về Virtual Hosting là gì ở bài viết mang tới cho bạn đọc nhiều thông tin bổ ích để có thể từ đó tự tạo Virtual Host trên Apache thành công! Bạn có thể tham khảo các gói Hosting của Tothost tại: