You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by khamis Siksek <kh...@freesoft.jo> on 2003/10/05 16:45:16 UTC

[users@httpd] VirtualHost dynamic and static

This is a detailed email to ease the process of understanding the issues
i had, and to ease the process of reproducing them at your sides

This email was sent on 25 Sep 2003, i didn't get any replies so i am
sending it again with the hope of finding someone interested ...


Thanks,

> I had a strange behavior from Apache that i don't know if it is a bug or
> a
> mis-configuration, and i hope that i find someone who is patient enough
> to
> read this email, has a solution for this problem, or says that this is a
> bug
> and should be escalated to the apache developers.
> 
> You need mainly three things here:
> 1- To configure the DNS
> 2- To configure apache
> 3- (optional) configure auth_pam_module (you can remove the
> authentication
> part from the configuration file)
> 
> I configured Apache (version 2.0.46) on RedHat 9.0 to support virtual
> hosting, and here is a snapshot of my configuration file
> 
> 
> --------- Starts Here --------
> .
> .
> . 
> #
> # Load config files from the config directory "/etc/httpd/conf.d".
> #
> Include conf.d/*.conf
> .
> .
> .
> LoadModule vhost_alias_module modules/mod_vhost_alias.so
> LoadModule rewrite_module modules/mod_rewrite.so
> .
> .
> .
> #
> ServerName www.mydomain.com:80
> UseCanonicalName Off
> DocumentRoot "/var/www/html"
> .
> .
> .
> <Directory "/home/*/website">
> 	AllowOverride None
> 	<FilesMatch "\.(pl|cgi|reg|php)$">
> 	 	deny from all
> 	</FilesMatch>
> </Directory>
> <Directory "/home/*/website/cgi-bin">
> 	AllowOverride None
> 	Options None
> 	<FilesMatch "\.(pl|cgi|reg|php)$">
> 	 	allow from all
> 	</FilesMatch>
> </Directory>
> <Directory "/home/*/website/cpanel">
> 	AllowOverride All
> 	AuthPAM_Enabled on
> 	AuthType "Basic"
> 	AuthName "Restricted Access"
> 
> 	<FilesMatch "\.(pl|cgi|reg|php)$">
> 	 	allow from all
> 	</FilesMatch>
> </Directory>
> .
> .
> .
> DirectoryIndex index.htm index.html index.html.var index.php
> .
> .
> .
> #
> # AccessFileName: The name of the file to look for in each directory
> # for access control information.  See also the AllowOverride directive.
> #
> AccessFileName .htaccess
> 
> #ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
> .
> .
> .
> #
> NameVirtualHost 192.168.0.1:80
> 
> <VirtualHost 192.168.0.1>
> 	DocumentRoot /var/www/html/website
>         ServerAdmin  admin@mydomain.com
>         ServerName   mydomain.com
> 		<Directory />
> 		    Options FollowSymLinks
> 		    AllowOverride None
> 		</Directory>
> 
>         ServerSignature email
> </VirtualHost>
> 
> <VirtualHost 192.168.0.1>
> 	DocumentRoot /var/www/html/website
>         ServerAdmin  admin@mydomain.com
>         ServerName   www.mydomain.com
> 	<Directory />
> 	    Options FollowSymLinks 
> 	    AllowOverride None
> 	</Directory>
>         ServerSignature email
> </VirtualHost>
> 
> <VirtualHost 192.168.0.1>
> 	DocumentRoot /var/www/html/website
>         ServerAdmin  admin@mydomain.com
>         ServerName   new.mydomain.com
> 	<Directory />
> 	    Options FollowSymLinks 
> 	    AllowOverride None
> 	</Directory>
>         ServerSignature email
> </VirtualHost>
> 
> <VirtualHost 192.168.0.1>
>         DocumentRoot /var/www/html/horde
>         ServerAdmin  admin@mydomain.com
>         ServerName   mail.mydomain.com
> 		<Directory />
> 		    Options FollowSymLinks
> 		    AllowOverride None
> 		</Directory>
> 
>         ServerSignature email
> </VirtualHost>
> --------- Ends Here ----------
> 
> The idea of the site is to give each user his own domain so if i have a
> user called
> jodeth, she will have her own website on jodeth.mydomain.com, we only
> add for her
> a corresponding DNS entry, and password entry (we use auth_pam_module
> for authentication)
> and a corresponding VirtualHost as the following
> 
> --------- Starts Here --------
> <VirtualHost 192.168.0.1>
>         DocumentRoot /home/jodeth/website
>         ServerAdmin  admin@mydomain.com
>         ServerName   jodeth.mydomain.com
> 	.
> 	.
> 	.
>         ServerSignature email
> </VirtualHost>
> --------- Ends Here ----------
> 
> ISSUE NUMBER 1:
> That works fine for us, but a problem occurred, when the number of users
> increased over 4000 user (i don't remember the specific number), the
> server started to refuse starting up (without giving an error message),
> it seems that there is a limitation on the number of VirtualHosts that
> can be used, i searched the net but i did't find anyone mentioning this
> limitation
> 
> So we thought of something else, i made some research on Apache and the
> solution
> was in the Dynamic VirtualHost, and by that the number of VirtualHost
> entries reduced
> from thousands to 5 main VirtualHost entries (the main four
> above-mentioned) and this
> one (Just a note i use an include file called mydomain.conf and as you
> can see the
> include files are included first thing in httpd.conf file i have from
> RedHat 9.0)
> 
> --------- Starts Here --------
> <VirtualHost 192.168.0.1:80>
>         VirtualDocumentRoot /home/%1/website
>         ServerAdmin administrator@mydomain.com
>         VirtualScriptAlias /home/%1/website/cgi-bin
> 
>         ServerSignature email
> </VirtualHost>
> --------- Ends Here ----------
> 
> ISSUE NUMBER 2:
> Another problem happened which is i needed to comment the ScriptAlias in
> the main file
> for my VirtualScriptAlias to work (I think that there should be some
> precedence, 
> so if not found in the VirtualScriptAlias to look into the ScriptAlias)
> 
> Since i don't need anything from the main ScriptAlias i didn't have a
> problem in commenting it out
> 
> ISSUE NUMBER 3:
> When i added the VirtualHost entry in the included file i had to put the
> port number
> (e.g. VirtualHost 192.168.0.1:80) unlike the VirtualHost i defined in
> the main httpd.conf file.
> 
> ISSUE NUMBER 4:
> The most strange behavior i saw, was when i started the apache server,
> everything works
> fine, when i give it mail.mydomain.com (or any of the main VirtualHost)
> i can browse it
> and when i use one of the defined DynamicVirtualHost (e.g.
> khamis.mydomain.com) it also
> works fine. Now the strange behavior was after several restarts the main
> ones are not
> available (the Dynamically defined ones are ok), you need to restart the
> server several times so they are available again.
> 
> I looked into the log files and i found this error message:
> [Tue Sep 23 07:07:00 2003] [error] [client 213.186.191.66] File does not
> exist: /home/mail
> 
> As you can see in the Dynamic VirtualHost settings i refer to /home, so
> apache assumed that
> mail.mydomain.com is another user and tried to fetch the website from
> the Dynamic VirtualHost
> instead of using the Static VirtualHost defined in the httpd.conf file,
> there should be
> some precedence for the statically defined VirtualHost over the
> dynamically defined
> VirtualHost in such case (or give a priority option in the configuration
> to solve this problem)
> 
> The last wierd issue is
> ISSUE NUMBER 5:
> After using dynamic VirtualHost, some of the users couldn't access thier
> own index.html
> and instead they go to index.html of the main site which reside in
> /var/www/html/website
> i had to touch the index.html (i.e. touch index.html) files in thier own
> home directories
> for them to appear. I verified that it nothing to do with the time,
> since there are other
> users who have thier index.html works fine.
> 
> I know that this is maybe the longest email you ever had, but i tried my
> best to explain the problems i faced and i didn't find any refernce for
> them on the net, sorry if i made you uncomfortable or bored, and
> Thanks for your patience and cooperation and i will be pleased to
> receive emails from you asking for more details, or giving me a link
> that can help.


---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org