Virtual hosts cho nhiều Website trên cùng một Web Server

Apache_VritualHost

Hãy tưởng tượng rằng Bạn muốn chia sẽ nhiều website hơn trên Internet nhưng tài chính chỉ cho phép bạn đầu tư được 1 Server vật lý hay 1 VPS (mình sẽ tạm gọi chung là 1 máy chủ nhé), ngoại trừ trong tay bạn có nhiều domain name hoặc nhiều IP public. Virtual Hosts là giải pháp tối ưu nhất có thể giúp Bạn.

Và trong bài viết này sẽ Tôi sẽ trình bày đến Bạn Virtual Hosts và cách sử dụng chúng để quản lý nhiều website trên cùng 1 Server vật lý hoặc 1 VPS được hỗ trợ bởi Web Server. Ở đây Tôi sẽ giới thiệu về 2 dạng Virtual Host chính:

  • Name-Based Virtual Hosts (xác định website dựa theo tên – Domain Name): Nhiều website sử dụng chung 1 IP. Server sẽ phân tích http header từ client yêu cầu để ánh xạ đến đúng website được chỉ định theo tên miền. Vì vậy Name-Based rất được ưa chuộng dùng để quản lý nhiều website trên cùng 1 máy chủ và trong thời buổi thế giới đang cạn kiệt IP Public cũng như sử dụng tối đang tài nguyên sẵn có. Nhược điểm lớn nhất là khi IP dùng chung gặp vấn đề thì tất cả các website bên trong đều sẽ bị ảnh hưởng.

Name-Based Virtual Hosts

  • IP-Based Virtual Hosts (xác định website dựa theo IP): Một IP sử dụng cho 1 Website. Web Server sẽ ánh xạ IP được yêu cầu đến đúng website mong muốn. Nên mỗi website sẽ được định nghĩa bởi 1 IP duy nhất giúp giảm thiểu tối đa sự cố xảy ra cho Website 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. Tuy nhiên, nó sẽ bất lợi hơn nếu so sánh với Name-Based Virtual Hosts.

IP-Based Virtual Hosts

  • Ngoài ra, Web Server còn có thể định nghĩa website dựa theo Port (tạm dịch là cổng giao tiếp) được gọi là Port-Based Virtual Host. Và đa phần sẽ được sử dụng phụ với 2 loại Virtual host chính ở trên. Với tính năng này Ta cũng có thể quản lý nhiều website theo số Port được định nghĩa kèm với IP hoặc Domain. Nhưng lưu ý rằng, Port sử dụng không được trùng với port mặc định đang hoạt động của bất kỳ 1 ứng dụng nào khác (ví dụ: port 22 (ssh), …).

Những vấn đề chi tiết hơn về các Virtual Host của Web Server Tôi sẽ trình bày ở 1 bài viết khác.

Tạo Virtual Host cho nhiều website

Trong phần giới thiệu trên cũng như đã so sánh cơ bản giữa 2 dạng Virtual host chính, Chúng ta cũng đã có thể xác định rằng Name-based Virtual tiện lợi hơn rất nhiều (cũng không loại trừ IP-Based virtual host khá phù hợp khi được sử dụng trong một vài trường hợp khác – chẳng hạn kết hợp với port-based thì nó sẽ tốt hơn rất nhiều nếu dùng Name-based sẽ làm cho cấu hình của bạn trở nên phức tạp và dễ gặp lỗi hơn, hoặc chỉ muốn chỉ định riêng 1 IP cho 1 Website) và bên dưới Tôi sẽ hướng dẫn cách thức sử dụng Virtual Host trên Apache sử dụng Name-Based Virtual Host.

Bật tính năng Virtual Host

Mở tập tin cấu hình Apache:

vi /etc/httpd/conf/httpd.conf

và tìm đến dòng “NameVirtualHost” bỏ đi ký tự “#” phía trước để kích hoạt tính năng.

confighttpdfornamevirtualhost

Sau khi đã bặt chức năng này chúng ta sẽ tạo 1 Virtual host theo thẻ chỉ thị <VirtualHost>…</VirtualHost>

<VirtualHost *:80>
        DocumentRoot <đường dẫn website của bạn>
        ServerName <domain name - www.examble.com>
        ServerAlias <domain name Alias - examble.com>

….
</VirtualHost>

Create_Name-Based-Virtual_Hos_

Bạn có thể cấu hình thêm 1 Virtual host để kiểm tra kết quả. Ở đây Tôi sẽ tạo thêm 1 Virtual host với tên “faker.com” (Nếu dư Domain thì thoải mái chỉ cần trỏ domain đúng IP máy chủ là được, ở đây Tôi chỉnh sửa file hosts Windows: C:\Windows\System32\drivers\etc\hosts – chỉnh sửa dưới quyền admin nhé)

Hosts_file

Kiểm tra lại toàn bộ cấu hình trong file httpd.conf để chắc chắn không có lỗi khi khởi động lại dịch vụ. Ta có thể dùng lệnh sau để kiểm tra:

service httpd configtest
httpd_configtest

Hoặc chúng ta có thể dùng lệnh sau để vừa kiểm tra các virtual host cũng như lỗi trong cấu hình httpd.conf :

httpd -S

Với tham số “-S” nó sẽ tiến hành dump tập tin cấu hình httpd.config và hiển thị ra màn hình các thiết lập cũng như phân tích cấu hình Virtual Host.

httpd_dump_VHostKhởi động lại dịch vụ httpd (service httpd restart) và kiểm tra kết quả:

babalaz.com

faker.com

Chúc các Bạn thành công!

Theo http://httpd.apache.org/

Comments

comments

  • Leave a Reply

    Your email address will not be published. Required fields are marked *