Introduction
Virtual hosting is a process for hosting multiple domain names on a single server. This is basically sharing the services of a single server for multiple companies or for multiple websites. Sometimes it's called Vhost. A Virtual Host is usually used by a company or organization that doesn't want to maintain or purchase multiple servers. Virtual Hosting can be supported using IIS Web Server or using Apache Web Server. In this article we will see how to create a virtual host using IIS Web Server on Windows Server 2012 VM.
You can do Virtual Hosting using IIS and Apache server. For more details about Virtual Hosting using IIS visit the following link.
http://www.c-sharpcorner.com/UploadFile/59b9d6/virtual-hosting-or-virtual-directory-using-iis/
This following procedure will provide you with deep knowledge about how to do Virtual Hosting using Apache Server.
Download the Apache “.msi” file from the https://archive.apache.org/dist/httpd/binaries/win32/ site.
For example httpd-2.2.25-win32-x86-no_ssl.msi.
Figure1 Download Apache
Install it on your server machine.
Figure 2 Instalation
Use the default server setting or change it depending on requirements.
Figure 3 Defoult Server Setting
Choose Typical Installation and finish the Apache installation process. After successful installation Apache will appear in your Taskbar icon list.
FIgure 4 Task Icon List
Now test Apache using an internet browser. Type localhost in the address bar and hit the Enter button.
Figure 5 Test Apache
Now create two web site folders and a default web page in the following Apache directory:
“C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs”
Figure 6 Create Website Folder
Now go to the following directory to add the virtual host details:
“C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra”
Figure 7 Directory
Open the “httpd-vhosts” file in a text editor and modify the virtual host part, in other words, the selected part in the following image.
Figure 8 Modify Virtual host
We can create as many virtual host as we want. In this tutorial we are creating two virtual hosts for two sites. Hence we added two virtual host entries.
- <VirtualHost *:80>
- ServerName sitea.testadmin2.cloudapp.net
- ServerAlias www.sitea.testadmin2.cloudapp.net
- DocumentRoot "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\SiteA"
- ErrorLog logs/sitea.com-error_log
- TransferLog logs/sitea.com-access_log
- </VirtualHost>
- <VirtualHost *:80>
- ServerName siteb.testadmin2.cloudapp.net
- ServerAlias www.siteb.testadmin2.cloudapp.net
- DocumentRoot "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\SiteB"
- ErrorLog logs/siteb.com-error_log
- TransferLog logs/siteb.com-access_log
- </VirtualHost>
Where:
ErrorLog and TransferLog are optional parameters.
ServerName is the name of server or host name. We can change it depending on our needs.
ServerAlias is the alias name for ServerName. We can provide one or more alias names.
DocumentRoot is the directory of the main web page.
Optional
We can also add localhost to the virtual host list to provide different web page results.
- <VirtualHost *:80>
- ServerName localhost
- ServerAlias localhost, testadmin2.cloudapp.net
- DocumentRoot "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs"
- ErrorLog logs/localhost.com-error_log
- TransferLog logs/localhost.com-access_log
- </VirtualHost>
Figure 9 Add Localhost
To include this Virtual Host file in the Apache service we need to import this into the main Apache config file. Before that, save this virtual host file and close it and go to the following directory to include it in the main Apache cofig file.
“C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf”
Figure 10 Virtual host File
Open the “Httpd” file in a text editor and find “httpd-vhosts” text in this file.
Figure 11 HTTPD File
Now remove ” # ”, in other words the “hash”, from the “Include conf/extra/httpd-vhosts.conf” text line.
Figure 12 Remove #
Save this httpd file and close it.
Now open
notepad in Administrative mode and browse to the following directory and
open the host file.
“C:\Windows\System32\drivers\etc”
Figure 13 Open Notepad
Add the following entries of the new Virtual host web sites.
#Optional Virtual Host Entries127.0.0.1 localhost
127.0.0.1 testadmin2.cloudapp.net
#Main Virtual Host Entries127.0.0.1 sitea.testadmin2.cloudapp.net
127.0.0.1 siteb.testadmin2.cloudapp.net
Figure 14 Add Entries
Save this host file and open the Apache Service Monitor and restart it.
Figure 15 Save Host File
After successful restart of the Apache Service, test the virtual host in your machine. Open a web browser and test all the virtual hosts and local hosts.
http://localhost/http://testadmin2.cloudapp.net/ http://sitea.testadmin2.cloudapp.net/ http://siteb.testadmin2.cloudapp.net/ Figure 16 Restart
If you want to test this virtual host from your remote machine, in other words over an internet connection, then you need to
add an inbound rule for http port, in other words
Port 80. For that open
“Windows Firewall with Advanced Settings”.Figure 17 Test Virtual Host
Select
Inbound Rules. Right-click on it and select
“New Rule..”.Figure 18 Inbound Rules
Select the Port option and click on the Next button.
Figure 19 Select Port
For a HTTP port set 80 in the text box and click on the Next button.
Figure 20 HTTP Port Set 80
Select Allow the connection option and click on the Next button.
Figure 21 Select Allow the Connection
Check the all option and click on the Next button.
Figure 22 Check All Option
Add a Name and Description of the inbound rule and click on the Finish button.
Figure 23 Add Name
Now an inbound rule was successfully added to the inbound firewall settings.
Figure 24 Inbound Rule
We need to set the local DNS for this virtual host (that we already set on the VM). In your PC or remote machine or in a testing machine go to the following directory and open the “
host” file in a text editor with Administrator privileges.
“C:\Windows\System32\drivers\etc”
Figure 25 Local DNS
Add the following entries so it will act as a local DNS server.
Syntax : <VM IP Address> <Virtual Host Name>
For example:
23.99.107.36 sitea.testadmin2.cloudapp.net
23.99.107.36 siteb.testadmin2.cloudapp.net
Figure 26 Add Following Entries
Now test this virtual host configuration in a web browser.
Figure 27 Test the Virtual Host