Virtual Host là gì?
Virtual Host (viết tắt là vhosts) là một tính năng của các máy chủ web, cho phép chạy nhiều website với tên miền khác nhau trên cùng một máy chủ vật lý. Khi sử dụng Virtual Host, các website khác nhau sẽ có thể chạy trên cùng một IP address và port.
Virtual Host hoạt động theo cơ chế khá đơn giản: đó là Khi một yêu cầu truy cập website được gửi đến máy chủ web, máy chủ sẽ xác định địa chỉ URL được yêu cầu, sau đó sử dụng thông tin này để xác định trang web tương ứng cần trả về. Các máy chủ web thông thường chỉ có thể hỗ trợ một website trên một cổng (port) duy nhất trên một địa chỉ IP cụ thể, nhưng với virtual host, chúng ta có thể chạy nhiều website trên cùng một cổng và địa chỉ IP.
Ngoài ra, mỗi Virtual Host có thể có cài đặt khác nhau cho hệ điều hành, ứng dụng, cơ sở dữ liệu, tên miền và cấu hình khác. Những Virtual Host này được xác định bằng cách sử dụng các thông tin như tên miền hoặc địa chỉ IP. Việc sử dụng Virtual Host giúp các trang web hoạt động độc lập với nhau, giảm thiểu sự cố va chạm tài nguyên và cải thiện khả năng mở rộng của hệ thống.
Các kiểu cấu hình phổ biến của virtual host
Có 4 cách thức thông dụng được dùng để cấu hình và nhận diện một máy chủ ảo trên hệ thống Virtual Host:
-
IP-based Virtual Host: Mỗi Virtual Host được liên kết với một địa chỉ IP riêng. Khi máy chủ nhận được một yêu cầu truy cập, nó sẽ dựa vào địa chỉ IP để xác định Virtual Host tương ứng để xử lý yêu cầu.
Ví dụ: Nếu bạn có một máy chủ web với hai địa chỉ IP khác nhau (192.0.2.1 và 192.0.2.2) và bạn muốn chạy hai trang web khác nhau trên mỗi địa chỉ IP, bạn có thể cấu hình Virtual Host bằng cách liên kết mỗi Virtual Host với một địa chỉ IP cụ thể.
-
Name-based Virtual Host: Mỗi Virtual Host được liên kết với một tên miền duy nhất, mà nhiều tên miền có thể chia sẻ cùng một địa chỉ IP. Khi máy chủ nhận được một yêu cầu truy cập, nó sẽ dựa vào tên miền được yêu cầu để xác định Virtual Host tương ứng để xử lý yêu cầu.
Ví dụ: Nếu bạn muốn chạy nhiều trang web khác nhau trên cùng một địa chỉ IP, bạn có thể cấu hình Virtual Host bằng cách liên kết mỗi Virtual Host với một tên miền duy nhất. Ví dụ, bạn có thể có hai trang web khác nhau (example.com và example.org) chạy trên cùng một địa chỉ IP và bạn có thể xác định Virtual Host tương ứng cho từng trang web bằng tên miền.
-
Port-based Virtual Host: Mỗi Virtual Host được liên kết với một cổng riêng, trong khi nhiều Virtual Host có thể chia sẻ cùng một địa chỉ IP và cùng một tên miền. Khi máy chủ nhận được một yêu cầu truy cập, nó sẽ dựa vào cổng được yêu cầu để xác định Virtual Host tương ứng để xử lý yêu cầu.
Ví dụ: Nếu bạn muốn chạy nhiều trang web khác nhau trên cùng một địa chỉ IP và cùng một tên miền, bạn có thể cấu hình Virtual Host bằng cách liên kết mỗi Virtual Host với một cổng riêng. Ví dụ, bạn có thể có hai trang web khác nhau chạy trên cùng một địa chỉ IP và cùng một tên miền (example.com), nhưng chúng sẽ được truy cập thông qua hai cổng khác nhau (80 và 8080).
-
Mix name/IP-based Virtual Host: Một cách cấu hình kết hợp giữa IP-based và name-based Virtual Host. Trong trường hợp này, mỗi Virtual Host được liên kết với một địa chỉ IP cụ thể và một tên miền duy nhất.
Ví dụ: Nếu bạn muốn chạy nhiều trang web khác nhau trên cùng một máy chủ web với nhiều địa chỉ IP khác nhau, bạn có thể cấu hình Virtual Host bằng cách liên kết mỗi Virtual Host với một địa chỉ IP cụ thể và một tên miền duy nhất. Ví dụ, bạn có thể có hai trang web khác nhau chạy trên hai địa chỉ IP khác nhau (192.0.2.1 và 192.0.2.2) với cùng một tên miền (example.com), và mỗi Virtual Host sẽ được xác định bởi cả địa chỉ IP và tên miền.
» Xem thêm: Check host là gì? Top 4 công cụ check hosting web nhanh và chuẩn nhất
Gofiber là công ty công nghệ cung cấp dịch vụ máy chủ và cho thuê VPS hàng đầu tại Việt Nam. Giải pháp máy chủ điện toán đám mây (cloud server/cloud VPS) của Gofiber được xây dựng trên nền tảng công nghệ ảo hóa tiên tiến KVM cùng hệ thống hạ tầng mạnh mẽ, Nhiều Data Center, Hỗ trợ đa dạng hệ điều hành, VPS KVM tối ưu hóa cho hiệu năng cao, Miễn phí DirectAdmin chính hãng, VPS SSD - ổ cứng SSD Enterprise hiệu năng đọc ghi cao.
Hướng dẫn cách tạo nhiều Virtual Host trên Apache
Tiếp theo Gofiber sẽ hướng dẫn các bạn cách tạo Virtual Host trên Apache. Với phần hướng dẫn này chúng tôi sẽ đưa ra ví dụ cụ thể là cần tạo Virtual Host trên Apache để vận hành 3 website.
**Yêu cầu: máy chạy hệ điều hành Ubuntu và đã cài Apache. Nếu máy của bạn chưa cài đặt Apache, hãy làm theo hướng dẫn bên dưới để cài đặt.
Hướng dẫn cài Apache nếu trên máy chưa có
Sử dụng lệnh sau trên Terminal hoặc Command Prompt:
Cập nhật các gói hiện có bằng lệnh:
sudo apt update
Cài đặt Apache bằng lệnh:
sudo apt-get install apache2
Kiểm tra xem Apache đã được cài đặt thành công hay chưa bằng cách mở trình duyệt web và truy cập vào địa chỉ IP của máy chủ. Nếu trang web mặc định của Apache xuất hiện, điều đó có nghĩa là Apache đã được cài đặt thành công.
Sau khi cài đặt Apache, bạn có thể tiếp tục thực hiện các bước để tạo các Virtual Host trên Apache theo các bước sau đây.
Bước 1: Tạo Cấu trúc Thư mục webserver
Thư mục webserver là nơi cho phép người dùng lưu trữ dữ liệu để hiển thị cho người dùng khi truy cập vào địa chỉ web, thường nó sẽ được đặt tên là public_html.
Thực hiện bằng lệnh sau:
sudo mkdir -p /var/www/gofiber-test1.com/public_html sudo mkdir -p /var/www/gofiber-test2.com/public_html
Bước 2: Cấp quyền
Như bạn đã biết, thư mục cấu trúc mới chúng ta vừa tạo sẽ có quyền quản trị thuộc về tài khoản root. Vì vậy, để sửa đổi các tệp trong thư mục web, bạn có thể thực hiện theo các bước sau:
sudo chown -R $USER:$YOUR_USER_NAME /var/www/gofiber-test1.com /public_html sudo chown -R $USER:$ YOUR_USER_NAME /var/www/gofiber-test2.com /public_html
Bước 3: Tạo các trang demo cho các Virual Host
Để tạo trang demo cho Gofiber-test1.com, chúng ta chỉ cần tạo một file index.html (/var/www/test1.com/public_html/index.html)
vi /var/www/gofiber-test1.com/public_html/index.html
Thêm đoạn HTML sau vào rồi sau đó là lưu tệp và thoát khỏi trình chỉnh sửa.
<html> <head> <meta charset="UTF-8"> <title>Trang chủ demo - gofiber-test1.com<title> </head> <body> <h1>Đã khởi tạo thành công máy chủ ảo!</h1> </body> </html>
Thực hiện tương tự với máy chủ ảo gofiber-test2.com
vi /var/www/gofiber-test2.com/public_html/index.html
Thêm đoạn HTML tương tự rồi lưu tệp và thoát khỏi trình chỉnh sửa.
<html> <head> <meta charset="UTF-8"> <title>Trang chủ demo - gofiber-test2.com<title> </head> <body> <h1>Đã khởi tạo thành công máy chủ ảo!</h1> </body> </html>
Bước 4: Tạo tập tin mới cho Virtual Host
Các tệp Virtual Host chứa thông tin và cấu hình cụ thể cho từng tên miền. Nó cho phép chúng ta thiết lập các tùy chọn riêng biệt cho từng miền trên cùng một máy chủ. Ví dụ, ta có thể thiết lập cấu hình toàn cầu cho Apache và cấu hình riêng cho một miền cụ thể.
Mặc định, Apache cung cấp một tệp Virtual Host có tên 000-default.conf mà chúng ta có thể sử dụng. Tuy nhiên, chúng ta nên tạo riêng các Virtual Host cho từng miền bằng việc đơn giản chỉ cần tạo bản sao của tệp này và chỉnh sửa trên đó.
Sau đó, ta có thể tạo Virtual Host cho mỗi miền bằng cách sử dụng các tùy chọn và cấu hình riêng biệt.
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/gofiber-test1.conf
Tiếp tục, hãy mở lên tệp vừa sao chép để tiến hành chỉnh sửa của bạn. Thông thường nó sẽ trông như bên dưới đây:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Lúc này, bạn cần thay đổi email thành địa chỉ email quản trị server.
ServerAdmin admin@gofiber-test1.com
Tiếp theo là thêm địa chỉ: Servername (Nên dùng tên miền của bạn) và ServerAlias. Kết quả nhận được sẽ là:
ServerName goffiber-test1.com ServerAlias www.gofiber-test1.com
Cuối cùng, vui lòng thay đổi vị trí của Document root cho domain này. Kết quả sẽ là:
DocumentRoot /var/www/gofiber-test1.com/public_html.
Tới đây, để cấu hình cho domain còn lại gofiber-test2.com bạn chỉ cần lặp lại các bước trên.
Bước 5: kích hoạt file Virtual Host mới
Thao tác thứ tự theo các lệnh dưới đây:
sudo a2ensite gofiber-test1.com.conf sudo a2ensite gofiber-test2.com.conf
Sau đó chúng ta cần khởi động lại Apache để áp dụng các thay đổi:
sudo service apache2 restart
Bước 6: Kiểm tra kết quả
Mở trình duyệt web và kích hoạt tên miền của từng trang web của bạn và kết quả sẽ giống như dưới đây:
Tạm kết về Virtual Host và các giá trị mà công nghệ này mang lại
Virtual Host không chỉ là một tính năng của máy chủ web mà nó còn là một giải pháp công nghệ tối ưu giúp cho một máy chủ có thể phục vụ nhiều trang web với các tên miền khác nhau trên cùng một địa chỉ IP.
Việc sử dụng Virtual Host giúp ta tận dụng tối đa tài nguyên máy chủ, tiết kiệm chi phí và giảm thiểu sự cố máy chủ. Ngoài ra, việc tách riêng các trang web trên các Virtual Host khác nhau cũng giúp chúng ta quản lý các trang web một cách dễ dàng và hiệu quả hơn. Nhìn chung, Virtual Host có thể giải quyết các vấn đề sau:
- Quản lý nhiều tên miền trên cùng một máy chủ
- Cung cấp các cấu hình và tùy chọn riêng biệt cho từng trang web
- Phân chia tài nguyên máy chủ giữa các trang web khác nhau
- Tăng tính bảo mật bằng cách cô lập các trang web khác nhau trên các Virtual Host riêng biệt.
» Xem thêm: Phân biệt host và server
Nếu bạn đang có nhu cầu muốn thực hiện đăng ký sử dụng các dịch vụ hosting, cloud VPS, máy chủ vật lý hay thuê chỗ đặt máy chủ vật lý thì có thể tham khảo các gói dịch vụ chất lượng đang có tại Gofiber.
- Hotline: 0989.07.85.07
- Fanpage: https://www.facebook.com/gofibervn1
- Website: https://gofiber.vn/
Gofiber: cung cấp dịch vụ hosting, máy chủ vật lý, máy chủ ảo vps tốc độ cao