Project

General

Profile

Mod simple vhost » History » Revision 10

Revision 9 (moo, 2007-07-07 15:29) → Revision 10/24 (moo, 2007-07-07 15:30)

[[TracNav(DocsToc)]] [[TracNav(DocsToc))]] 
 {{{ 
 #!rst 

 ====================== 
 Simple Virtual-Hosting 
 ====================== 

 ------------------------ 
 Module: mod_simple_vhost 
 ------------------------ 


 .. contents:: Table of Contents 




 Description 
 =========== 

 Simple assumption: 

 Every virtual host is in a directory below a base directory in a path that 
 is the same as the name of the vhost. Below this vhost path might be an 
 extra directory which is the document root of the vhost. 

 The document root for each vhost is built from three values: 

 - server-root 
 - hostname 
 - document-root 

 The complete document root is constructed either by :: 

   server-root + hostname + document-root 
  
 or if this path does not exist by :: 

   server-root + default-host + document-root 
  
 A small example should make this idea clear: :: 

   /var/www/ 
   /var/www/logs/ 
   /var/www/servers/ 
   /var/www/servers/example.org/ 
   /var/www/servers/example.org/lib/ 
   /var/www/servers/example.org/pages/ 
   /var/www/servers/mail.example.org/ 
   /var/www/servers/mail.example.org/lib/ 
   /var/www/servers/mail.example.org/pages/ 
  
   simple-vhost.server-root = "/var/www/servers/" 
   simple-vhost.default-host = "example.org" 
   simple-vhost.document-root = "pages" 

 You can use symbolic links to map several hostnames to the same directory. 

 Conditionals vs. simple-vhost 
 ----------------------------- 
 You have to keep in mind that conditionals and simple-vhost interfere 
 with one another. :: 

   simple-vhost.server-root = "/var/www/servers/" 
   simple-vhost.default-host = "example.org" 
   simple-vhost.document-root = "pages" 

   $HTTP["host"] == "news.example.org" { 
     server.document-root = "/var/www/servers/news2.example.org/pages/" 
   }  

 When ``news.example.org`` is requested, the ``server.document-root`` 
 will be set to ``/var/www/servers/news2.example.org/pages/``, but 
 simple-vhost will overwrite it shortly afterwards. 

 If ``/var/www/servers/news.example.org/pages/`` exists, that will be 
 used. If not, ``/var/www/servers/example.org/pages/`` will be taken 
 because it is the default. 

 To use conditionals together with simple-vhost, you should do this: :: 

   $HTTP["host"] != "news.example.org" { 
     simple-vhost.server-root = "/var/www/servers/" 
     simple-vhost.default-host = "example.org" 
     simple-vhost.document-root = "pages" 
   } 

   $HTTP["host"] == "news.example.org" { 
     server.document-root = "/var/www/servers/news2.example.org/pages/" 
   }  

 It will enable simple vhosting for all hosts other than ``news.example.org``. 

 Options 
 ======= 

 simple-vhost.server-root 
   root of the virtual host 
  
 simple-vhost.default-host 
   use this hostname if the requested hostname does not have its own directory 
  
 simple-vhost.document-root 
   path below the vhost directory 

 Tips 
 ======= 
 Make sure mod_simple_vhost is the first mod in 'server.modules' list,when you are using mod_simple_vhost with mod_cache and mod_proxy. 

 You can configure a virtual host with multiple domain names by using 'or' syntax such as: :: 

   $HTTP["host"] =~ "^(hosta\.example\.org|hosta\.example\.net)$" { 
     ... virtualhost configuration here ... 
   } 


 }}}