Thanks to everyone's replies, but I think I have found my answer. I have talked to other hosting providers who are using <VirtualHost> directives with over 500 hosts without any performance hit. As I don't think rewrite will let me make changes to say ThrottlePolicy per host, I will just continue to use <VirtualHost> and restart apache when necessary.

Thanks again for everyone's help!

p.s. I have read Apache Cookbook, it provides only sparse information on mod_rewrite but otherwise is a great book full of useful information. Of course, so are most O'Reilly books, IMHO. :)


--------------------------
Hosted by CyberAddict (http://www.cyberaddict.net)



On May 23, 2004, at 10:22 PM, Tom Gordon wrote:

On Sun, 2004-05-23 at 16:05, Vince Hoang wrote:
On Sun, May 23, 2004 at 03:10:15PM -0600, Paul wrote:
The <VirtualHost> directive is a pain since I have to restart
Apache every time there is a change. I would like an option to
do reconfiguration dynamically and prevent restarts. I have
also heard that too man <VirtualHost> entries begin to really
slow Apache down, at least in its starts and stops.

Startup is slower because apache has to parse its ever growing
configuration file. The alternative is running many separate
instances of apache, so it is a small price to pay.

Mod_Rewrite seems like a really good option, but I fail to see
a way to pass unique directives to each virtual host.

Mod_rewrite is a great tool, but I always keep the rewrite rules
within each respective virtual host.

Or has anyone found a different way to dynamically add or
delete virtual hosts without having to restart Apache?

With `apachectl graceful`, the parent pid rereads the
configuration file and tells the old children to die off when
they are done serving pages. Be sure to do an `apachectl
configtest` beforehand because typos in the configuration file
will cause apache to exit completely.

-Vince
From the apache cookbook online:

--snip--
Recipe 4.7: Mass Virtual Hosting Using Rewrite Rules
Problem
Although there is a module - mod_vhost_alias - which is explicitly for
the purpose of supporting large numbers of virtual hosts, it is very
limiting and requires that every virtual host be configured exactly the
same way. You want to support a large number of vhosts, configured
dynamically, but, at the same time, you want to avoid mod_vhost_alias.


Solution
Use directives from mod_rewrite to map to a directory based on the
hostname:

RewriteEngine on
RewriteCond   %{HTTP_HOST}     ^(www\.)?([^.]+)\.com$
RewriteRule   ^(.*)$   /home/%2$1
Discussion
mod_vhost_alias is useful, but it is best for settings where each
virtual host is identical in every way but hostname. Using
mod_vhost_alias precludes the use of other URL-mapping modules, such as
mod_userdir, mod_rewrite, and mod_alias, and it can be very restrictive.
Using mod_rewrite is less efficient, but it is more flexible.

For example, when using mod_vhost_alias, you must do all of your hosts
with mod_vhost_alias; whereas with this alternate approach, you can do
some of your hosts using the rewrite rules and others using conventional
virtual host configuration techniques.

The directives in the Solution map requests for www.something.com (or
without the www) to the directory /home/something.


See Also
      * Recipe 5.16 of Apache Cookbook
      * http://httpd.apache.org/docs/vhosts/
      * http://httpd.apache.org/docs/mod/mod_rewrite.html

--/snip--

you can also do this with squid/squirm in reverse... it is very very
fast, uses virtually no memory, can reread configs after sending -HUP,
uses full regex and if you mess it up, it'll still function.

--
Tom Gordon <[EMAIL PROTECTED]>
<3 the United States of America
_______________________________________________
LUAU@lists.hosef.org mailing list
http://lists.hosef.org/cgi-bin/mailman/listinfo/luau

Reply via email to