Hướng dẫn cách đổi tên ảo Named-based Virtual Host trong Apache đơn giản và hiệu quả
Đối với những ai đang quản trị tất cả những gì liên quan tới website hẳn sẽ khá am hiểu kiến về máy chủ. Nếu bạn đang là một trong những đối tượng người dùng trên hẳn bạn cũng biết thông thường người quản trị có xu hướng sử dụng tên ảo để có thể chạy được nhiều tên(Host names) khác nhau trên cùng một máy chủ.
Virtual Host là tính năng của Apache giúp ta duy trì nhiều hơn một web server trên một máy tính. Nhiều tên cùng chia sẻ một địa chỉ IP gọi là named-based virtual hosting, và sử dụng những địa chỉ IP khác nhau cho từng domain gọi là IP-based virtual hosting. Do vậy Apache có thể sử dụng 2 loại tên ảo đó là cách dựa vào tên (name-based virtual host) và cách dựa vào IP (IP-based virtual host). Với mỗi một loại tên ảo người dùng sẽ có cách sử dụng riêng. Bởi cơ chế hoạt động cũng như bản chất của chúng là khác nhau. Để bạn đọc có thể hiểu rõ hơn về hai loại tên ảo trên, bạn đọc hãy cùng theo dõi nội dung bài viết dưới đây của chúng tôi nhé!
IP-based virtual host là gì?
Xét về loại tên ảo VirtualHost dựa trên IP yêu cầu những server phải có một địa chỉ IP khác nhau cho mỗi virtualhost dựa trên IP. Như vậy, một máy tính phải có nhiều interface hay sử dụng cơ chế virtual interface mà những hệ điều hành sau này hỗ trợ. Ví dụ trong bài lab này tôi có 1 card mạng eth0 với ip là 192.168.40.135, tôi có thể thêm cho nó 1 virtual ip khác.
Named-based Virtual Host là gì?
Nếu như IP-based Virtual Host dựa vào địa chỉ IP để quyết định Virtual Host nào đúng để truy cập. Vì thế, bạn cần phải có địa chỉ IP khác nhau cho mỗi Virtual Host. Với Named-based Virtual Host, server dựa vào HTTP header của client để biết được hostname. Sử dụng kỹ thuật này, một địa chỉ IP có thể có nhiều tên máy tính khác nhau. Named-based Virtual Host rất đơn giản, bạn chỉ cần cấu hình DNS sao cho nó phân giải mỗi tên máy đúng với một địa chỉ IP và sau đó cấu hình Apache để tổ chức những web server cho những miền khác nhau.
Lưu ý: Việc sử dụng tên ảo bằng cách lựa chọn sử dụng Named-based Virtual Host có lợi thế hơn IP-based Virtual Host bởi bạn chỉ cần dùng một địa chỉ IP cho tất cá các tên.
Tuy nhiên để làm được điều đó thì việc quan trọng đó là bạn phải khai báo tất cả các tên bạn muốn dùng với Apache trong máy chủ DNS trước. Nếu bạn chỉ khai báo thoải mái các tên khác nhau trong httpd.conf (hay apache.conf) mà trong máy chủ DNS không hề có thông tin của các tên thì người dùng sẽ không thấy được trang web của bạn.
Dù khá thuận lợi trong việc sử dụng nhưng Named-based Virtual Host lại có một nhược điểm khá lớn đó chính là bạn sẽ không dùng được SSL (https://) cho tất cả các tên vì SSL yêu cầu mỗi tên phải có riêng một IP trong khi sử dụng tên ảo dựa vào tên thì bạn chỉ có một IP duy nhất cho nhiều tên khác nhau.
Chính vì lợi thế mà Named-based Virtual Host mang lại nên trong bài viết này chúng tôi sẽ tập trung vào việc giới thiệu hướng dẫn cách đổi tên ảo Named-based Virtual Host trong Apache một cách đơn giản và hiệu quả nhất.
Ví dụ cụ thể:
vdo.com.vncó địa chỉ là 24.153.136.146. Tại sao mình biết? Chỉ việc gõ host vdo.com.vnthì bạn sẽ thấy trả lời giống bên dưới:
rhs@gw rhs $ host vnlinux.org
vdo.com.vnhas address 24.153.136.146
Mỗi lần ghé thăm trang web vdo.com.vn, thì người dùng có thể gõ https://www.vdo.com.vn hoặc https://vdo.com.vn sẽ đều thấy cả hai địa chỉ khác nhau nhưng nội dung thì như nhau. Tại sao vậy? Nếu bạn gõ host www.vdo.com.vn thì bạn sẽ thấy trả lời như sau:
rhs@gw rhs $ host www.vnlinux.org
www.vdo.com.vn is an alias for vdo.com.vn.
Nguyên nhân là do mình đã khai báo trong DNS record, www.vdo.com.vnsẽ là alias (hay còn gọi là CNAME khi thiết lập máy chủ DNS) của vdo.com.vn. Bên dưới là những hàng mình lấy ra từ tập tin db.vdo.com.vnvcủa máy chủ DNS
vdo.com.vn. IN A 24.153.136.146
www. vdo.com.vn. IN CNAME vdo.com.vn.
Trong httpd.conf (hay apache.conf), mình khai báo ServerName www.vdo.com.vn
// Ví dụ trên chỉ đơn thuần giải thích cách dùng CNAME cho trang web .
Kế tiếp mình sẽ giải thích cách cấu hình dns và apache cho việc sử dụng tên ảo dựa vào tên (name-based virtual host).
Ví dụ trên bạn cũng đã thấy www.vdo.com.vn có IP là 24.153.136.146. Mình cũng đã có những trang web sau cùng có chung IP với vdo.com.vn bằng cách sử dụng tên ảo dựa vào tên.
howto.vdo.com.vn
i18n.vdo.com.vn
dịchthuật.vdo.com.vn*
Bên dưới là kết quả của lệnh host cho những tên phía trên:
rhs@gw rhs $ host howto.vnlinux.org
howto.vdo.com.vnhas address 24.153.136.146
rhs@gw rhs $ host i18n.vnlinux.org
i18n.vdo.com.vnhas address 24.153.136.146
rhs@gw rhs $ host xn--dchthut-5p4c4j.vnlinux.org
xn--dchthut-5p4c4j.vdo.com.vn has address 24.153.136.146
Chú thích: xn--dchthut-5p4c4j là punycode format cho dịch thuật
Thông tin khai báo cho DNS (Nhớ khởi động lại máy chủ DNS):
howto. vdo.com.vn. IN A 24.153.136.146
i18n. vdo.com.vn. IN A 24.153.136.146
xn--dchthut-5p4c4j. vdo.com.vn. IN A 24.153.136.146
Thông tin khai báo trong httpd.conf (hay apache.conf hay VHost.conf…)
NameVirtualHost 24.153.136.146:80
(VirtualHost 24.153.136.146:80)
ServerAdmin [email protected]
DocumentRoot /Nơi/các/tập/tin/nằm/trong/htdocs
ServerName www. vdo.com.vn
ErrorLog logs/VietLUG_error_log
CustomLog logs/VietLUG_access_log common
DirectoryIndex index.html
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^{TRACE|TRACK}
RewriteRule .* – [F]
(/VirtualHost)
Chú ý: Thay () với <> trước và sau chữ VirtualHost. Bạn hãy nhớ thay hàng đầu phía trên.
(VirtualHost 24.153.136.146:80)
ServerAdmin [email protected]
DocumentRoot /Nơi/các/tập/tin/nằm/trong/htdocs
ServerName xn--dchthut-5p4c4j.vnlinux.org
ErrorLog logs/dichthuat_error_log
CustomLog logs/dichthuat_access_log common
DirectoryIndex index.html
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^{TRACE|TRACK}
RewriteRule .* – [F]
(/VirtualHost)
Chú ý: Thay () với <> trước và sau chữ VirtualHost. Bạn hãy nhớ thay hàng đầu phía trên.
Đối với 2 tên howto và i18n bạn hãy làm tương tự như các thao tác chúng tôi đã hướng dẫn ở trên nhé! Một chú ý nhỏ cho bạn đó là đừng quên khởi động lại apache nhé!
Lưu ý: những dòng trên là những khai báo căn bản trong httpd.conf. Tùy vào nhu cầu phục vụ trang web mà bạn rất có thể cần thêm bớt các giá trị tùy thích.
Nếu bạn đã khai báo trong DNS và apache đầy đủ mà vẫn không thấy các tên ảo hoạt động, rất có thể bạn phải chờ trong vòng một ngày (hoặc sớm hơn, hoặc lâu hơn) để DNS records chứa những thông tin bạn vừa thành lập được cập nhật.
Muốn kiểm tra ngay lập tức xem các tên ảo đã được thiết lập đúng chưa bạn có thể gõ httpd -S (hay apache -S).
Hi vọng với những kiến thức chúng tôi chia sẻ thực sự hữu ích đối với bạn. Hãy thực hiện theo những thao tác chúng tôi đã hướng dẫn để cảm nhận thành quả nhé! Đừng quên chia sẻ bài viết nếu bạn thấy cũng thực sự có giá trị.
Chúc các bạn luôn thành công!
>>> Gợi ý Google:
virtual hosts
apache virtual hosts
nginx virtual hosts
mamp virtual hosts
digitalocean virtual hosts
hosted virtual desktop
mamp virtual hosts
apache2 virtual hosts
ubuntu virtual hosts
Nguồn Tổng Hợp