Trang chủKiến thức dịch vụTìm hiểu về virtual host và cách tạo virtual host trên Apache

Tìm hiểu về virtual host và cách tạo virtual host trên Apache

Thứ Hai, 4/10/2023, 2:49:44 PMlike 1358
Virtual host hay còn gọi là máy chủ ảo là giải pháp công nghệ rất hữu ích vì giúp tiết kiệm chi phí và đồng thời tăng năng suất của máy chủ.

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:

  1. 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ể.

  1. 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.

  1. 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).

  1. 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.

Màn hình mặc định của Apache

 

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:

demo web virtual host

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

5/5 - (0 bình chọn)

Xin chào! Tôi là Lê Hữu Ngân, tôi đã có nhiều năm làm việc trong lĩnh vực công nghệ. Tôi dành phần lớn thời gian vào công việc SEO và content, đảm bảo rằng mọi chiến dịch của tôi đáp ứng được mục tiêu và mang lại kết quả tốt nhất. Tôi luôn đề cao sự chính xác, sự sáng tạo và sự tận tụy trong công việc. Nếu bạn đang tìm kiếm một chuyên gia trong lĩnh vực công nghệ, SEO và content, hãy cùng chúng tôi làm việc. Gofiber chúng tôi sẽ áp dụng kinh nghiệm và kiến thức của mình để mang lại giải pháp tối ưu cho công việc của bạn.


Tags: #Hướng dẫn hosting

CÓ THỂ BẠN QUAN TÂM

Xem nhiều nhất

thuê VPS giá rẻ