Virtual host is widely used in web servers. Probably most of
the public facing web servers use the technology. It provides the ability to
host multiple hosts in a single Apache HTTP (or any other web servers) instance.
There are two types of virtual host:
- IP-based virtual host: use different IP address to provides different content to the user
- Name-based virtual host: use different host name to provide different content to the user
Obviously, name-based virtual host is much more important as
IP address is limited and involves lots of infrastructure configuration.
Name-based virtual host
Name-based virtualhost is based on a field called HOST in
http request.
Here is part of my http request to the website
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Host:fujtest:90
If-Modified-Since:Fri, 23 Sep 2011 00:52:33 GMT
The web server then severs the request based on the HOST
field.
It is strongly recommended to use different configuration
file rather than the main httpd.conf to enable the virtual host setting for a
large website. It will make the main section httpd.conf more concise and
readable.
Here is a very basic configuration for the name-based
virtual host configuration.
In main httpd.conf
Include conf/extra/httpd-vhosts.conf # to include the virtual host configuration.
In the conf/extra/httpd-vhosts.conf, we first need to enable
name virtual host function by
NameVirtualHost [FQDN or IP]:[PORT]
Then define the virtualhost section
<VirtualHost ip:port>
ServerName
DocumentRoot
etc
</VirtualHost>
Here is a simple sample configuration.
NameVirtualHost 192.168.179.150:90
<VirtualHost 192.168.179.150:90>
DocumentRoot "/usr/local/apache2/htdocs/fujtest1"
ServerName fujtest1
ErrorLog "logs/fujtest1_error.log"
CustomLog "logs/fujtest1_access.log" common
</VirtualHost>
<VirtualHost 192.168.179.150:90>
DocumentRoot "/usr/local/apache2/htdocs/fujtest2"
ServerName fujtest2
ErrorLog "logs/fujtest2_error.log"
CustomLog "logs/fujtest2_access.log" common
</VirtualHost>
You may need to check the permission options if virtual host
is not in your main document ROOT section
No comments:
Post a Comment