Khi máy chủ có 1 địa chỉ IP và yêu cầu cần tạo nhiều website trên đó thì việc sử dụng Virtual host dựa trên tên được lựa chọn. Với cách này, máy chủ Apache sẽ phải khai báo tất cả các tên miền muốn dùng trong máy chủ DNS trước hoặc sử dụng file host và thường sử dụng hostname do khách hàng đặt làm header cho HTTP. Nhược điểm của cách này là không thể sử dụng SSL (https://) cho tất cả các tên miền vì tất cả các tên SSL yêu cầu mỗi tên phải có 1 IP.
Khi xây dựng Named-based virtual hosting chúng ta làm như sau:
- Thêm địa chỉ IP chứa virtual host vào file httpd.conf NameVirtualHost <Your IP Address> trên máy chủ. Điều này làm cho Apache biết được đâu là địa chỉ IP chứa tên miền mà bạn muốn ánh xạ đến. Trong một vài trường hợp thì 1 hoặc tất cả các địa chỉ IP trên Server đều được sử dụng thì chúng ta có thể sử dụng “*” thay thế địa chỉ Ip cụ thể. Nếu máy chủ sử dụng nhiều port bạn có thể thêm thông tin về cổng như sau “*:80”.
- Bước tiếp là tạo ra một khối <VirtualHost> cho mỗi máy chủ khác nhau mà bạn muốn phục vụ. Bên trong mỗi khối <VirtualHost> sẽ có những thông tin như ServerName, ServerAlias để chỉ định một máy chủ muốn được phục vụ và một đường dẫn tới DocumentRoot để hiển thị. [16]
Ví dụ: Giả sử 2 tên miền www.example.com , example.org cùng hoạt động trên cùng 1 địa chỉ IP. Sau đó, bạn chỉ cần thêm dòng sau vào httpd.conf:
NameVirtualHost *:80 <VirtualHost *:80>
# This first-listed virtual host is also the default for *:80 ServerName www.example.com
ServerAlias example.com DocumentRoot /var/www/domain
39 </VirtualHost>
<VirtualHost *:80>
ServerName www. example.org ServerAlias example.org
DocumentRoot /var/www/ example.org </VirtualHost>
Khi người sử dụng muốn truy cập domain của mình bằng nhiều tên khác nhau, Apache sẽ sử dụng thêm ServerAlias được thêm vào trong khối < Virtual host>, câu lệnh như sau: ServerAlias example.com *.example.com.