NsVirtual module page
The NsVirtual module is a module,
which is written for the needs of web hosting companies, who have to support
lots of virtual hosts. We didn't have any time for testing it, but it seems
to work fine. The whole idea came from the mod_vhost_alias module in Apache,
which makes a url2file mapping for each virtual host. We extended the idea here
and decided to use the ability of AOLserver to communicate with databases (MySQL
in our case). What this module does is a very simple url2file mapping. It uses
a table in the database, which has two columns - in the first column we store
the virtual hosts (foo.bar.com for example) and in the second column we store
the DocumentRoot directory for this virtual host (/home/httpd/html/foo-bar).
When the module is initialized it reads this table and stores the two values
for each virtual host in a Ns_Set, where the first column is the key and the
second column is the value. When a url i requested we read the Host header,
passed to the web server and get the DocumentRoot path in the Ns_Set. We've
also added a scheduled procedure, which executes on every 5 minutes and appends
the virtual hosts that are new for our Ns_Set. We decided to make it such way
in order the module to be faster and with less code. We met a problem with the
trailing slashes with this module - if somebody requests http://foo.bar.com
(not http://foo.bar.com/) the AOLserver redirects internally this request to
the hostname of the server, which in our case is not the redirect that we should
have. That's why we made a tiny patch of the return.c file, which is part of
the AOLserver. Here are the patch, the module and the "vhost" table
dump: