Virtual Host là một khái niệm đã không còn gì xa lạ với lập trình viên khi Public các trang Web của mình lên Internet. Tuy nhiên, có một bộ phận người mới, hoàn toàn chưa hiểu hết về Virtual Host cũng như cách áp dụng vào thực tiễn trên máy chủ Server. Bài viết dưới đây sẽ giải đáp Virtual Host là gì, cùng Vietnix theo dõi nhé.
Virtual Hosts là gì?
Virtual Host là một dạng lưu trữ mà bạn lưu được nhiều domain khác nhau trên cùng một máy chủ sever. Hiện nay Virtual được xem là một giải pháp tiết kiệm chi phí vì nó cho phép bạn nhúng nhiều domain trên một địa chỉ IP trong một Sever. Server sẽ tự động hiểu tên miền nào đang vận hành bên trong vị trí lưu trữ Server tùy theo cách cài đặt của bạn.
Virtual Hosts được xem là một giải pháp tối ưu vừa tiết kiệm chi phí vừa được trải nghiệm tốt khi sử dụng nhiều tên miền chỉ trên một địa chỉ IP của Server. Bên cạnh đó, Virtual Hosting còn mang đến khá nhiều lợi ích trong quá trình sử dụng như:
- Bạn có thể dễ dàng thao tác vào một thư mục lưu trữ Code nào và 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 bạn phân vùng lưu trữ Code ở một Folder Code nhất định, thì bạn sẽ không tốn thời gian sao lưu lại dữ liệu trong Folder Code khi cài đặt lại hệ điều hành Window.
Xem thêm: Mua hosting ở đâu giá rẻ? Top 9 hosting tốt nhất, uy tín 2023
Cách thức vận hành của Virtual Host
Có nhiều cách khác nhau để xác định cấu hình của một Virtual Host, nhưng cách được sử dụng thông dụng ngày nay là:
- IP Based.
- Port – Based.
- Name Based.
IP Based
IP-Based Virtual Hosts (xác định website dựa theo IP): Đây là phương pháp đơn giản nhất trong 3 phương pháp, Một IP sử dụng cho 1 Website. 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ì thế, mỗi trang web sẽ được định nghĩa bởi 1 IP duy nhất nhằm tránh những vấn đề không đáng có cho trang web liên quan đến địa chỉ IP. Tuy nhiên IP-Based (dùng trên 1 máy chủ) cần thiết lập Virtual Interface trên 1 máy chủ để có thể sử dụng được nhiều IP.
Port Based
Port Based tương đương với IP-Based, nhưng sự khác biệt ở phương thức này là có thể quản lý nhiều trang web dựa theo số Port được định nghĩa cùng với IP hoặc tên miền. Ngoài ra, Port sử dụng 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
Name Based (xác định website dựa theo tên – Domain Name): Nhiều website sử dụng chung 1 IP. Server sẽ đối chiếu http header từ client yêu cầu để ánh xạ đến đúng website được chỉ định theo Domain. Cho nên, Name-Based rất được ưa thích trong việc quản lý nhiều trang web trên cùng 1 máy chủ và trước tình trạng thế giới đang dần cạn kiệt IP Public, đồng thời sử dụng tối đa tài nguyên hiện có. Hạn chế lớn nhất khi bạn dùng IP chung, nếu gặp vấn đề thì tất cả các trang web của bạn đều sẽ bị ảnh hưởng theo.
Hướng dẫn tạo Virtual Host trên Apache nhanh chóng
Để tạo Virtual Host trên Apache thành công, bạn cần lưu ý một số yêu cầu sau:
Yêu cầu
Bạn cần có hệ điều hành Ubuntu và đã cài đặt Apache.
Nếu ai chưa có Apache, đầu tiên hãy cài đặt với các bước thứ tự như sau:
sudo apt-get update
sudo apt-get install apache2
- Test1.com.
- Test2.com.
Bước 1: Tạo Cấu trúc Folder
Việc tạo cấu trúc folder dùng để lưu trữ dữ liệu của người dùng, hoặc chứa dữ liệu của người dùng khi truy cập vào trang web.
Cho nên, chúng ta cần tạo thư mục cấu trúc sau thư mục gốc ( /var/wwwdirectory)
sudo mkdir -p /var/www/test1.com/public_html
sudo mkdir -p /var/www/test2.com/public_html
Bước 2: Cấp quyền
Như bạn cũng biết, thư mục cấu trúc mà chúng ta vừa tạo quyền quản trị thuộc tài khoản root. Vì vậy, nếu bạn muốn thay đổi để sửa đổi các tệp trong thư mục web, có thể thực hiện bằng cách sau đây:
sudo chown -R $USER:$YOUR_USER_NAME /var/www/test1.com /public_html
sudo chown -R $USER:$ YOUR_USER_NAME /var/www/test2.com /public_html
Bước 3: Tạo các trang demo cho từng Virual Host
Đầu tiên, cần tạo trang demo cho Test1.com bằng cách mở trình soạn thảo mà chọn và thực hiện một số HTML sau: vi /var/www/test1.com/public_html/index.html.
Sau khi mở, hãy viết một HTLM đơn giản, tiếp theo là lưu tệp và thoát khỏi trình chỉnh sửa.
<html>
<head>
<title>Home Page of Test1.com<title>
</head>
<body>
<h1>Success! The test1 virtual host is working!</h1>
</body>
</html>
Tương tự, bạn có thể dễ dàng tạo HTML cho các trang website khác. Ví dụ: Test2.com/Test3.com.
vi /var/www/test2.com/public_html/index.html
<html>
<head>
<title>Home Page of Test2.com<title>
</head>
<body>
<h1>Success! The test2 virtual host is working!</h1>
</body>
</html>
Bước 4: Tạo tập tin mới cho Virtual Host
Các tệp Virtual host là các tệp chứa thông tin và cấu hình cụ thể cho từng miền, ví dụ: chúng ta có thể có cấu hình Apache toàn cầu và các tùy chọn độc lập cho một miền cụ thể.
Apache bao gồm một tệp Virual host mặc định có tên 000-default.conf mà chúng ta có thể sử dụng.
Đầu tiên , bạn sẽ tạo một bản sao để làm việc với nó và tạo Virual host cho mỗi miền.
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sitesavailable/test1.conf
Sau khi thao tác xong, hãy mở lên với trình chỉnh sửa của bạn. Và 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>
Tại đây, bạn cần thay đổi email để thay thế bằng địa chỉ email quản trị server.
ServerAdmin admin@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 test1.com
ServerAlias www.test2.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/test1.com/public_html.
Tương tự, bạn thao tác đúng quy trình như trên cho domain thứ 2.
Bước 5: Kích hoạt file Virual Host mới
Chúng ta vừa tạo các file server ảo của bạn, bây giờ chúng ta phải kích hoạt nó. Thao tác thứ tự theo các lệnh dưới đây:
sudo a2ensite test1.com.conf
sudo a2ensite test2.com.conf
Sau khi hoàn tất, bạn cần khởi động lại Apache.
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:
Nếu tạo thành công, thì bạn sẽ có một server duy nhất xử lý hai tên miền riêng biệt. Tại đây, người dùng có thể thao tác tương tự quy trình này theo các bước như trên để tạo thêm các server ảo. Không quy định số lượng phần mềm về số lượng tên miền mà Apache có thể xử lý, vì vậy hãy thoải mái tạo ra càng nhiều càng tốt để server của bạn có thể xử lý.
Ngoài ra, để tối ưu hơn khi sử dụng Virtual Hosts và quản lý nhiều tên miền trên cùng một máy chủ, việc sở hữu các tên miền chất lượng là rất quan trọng. Vietnix cung cấp dịch vụ đăng ký tên miền dễ dàng và bảo mật, giúp bạn chọn lựa từ hàng nghìn đuôi tên miền phổ biến. Việc đăng ký tên miền tại Vietnix không chỉ giúp bạn sở hữu tên miền riêng biệt mà còn đảm bảo quá trình thiết lập Virtual Hosts trên máy chủ của bạn trở nên đơn giản và hiệu quả.
>> Tham khảo thêm: Apache Tomcat là gì? Hướng dẫn cài đặt Apache Tomcat dành cho người mới
Lời kết
Hy vọng với bài viết trên, bạn có thể tạo Virtual Hosts trên Apache để thêm domain vào VPS và chạy nhiều website trên 1 server với số lượng không giới hạn. Nếu có điểm nào thắc mắc hãy liên hệ Vietnix để được hỗ trợ. Chúc các bạn thành công!