map module - mass hosting

beatnut nginx-forum at nginx.us
Wed Apr 23 13:27:33 UTC 2014


Thank You for answer.
I've additional questions.


Maxim Dounin Wrote:
-------------------------------------------------------
> Hello!
> 
> On Wed, Apr 23, 2014 at 08:07:42AM -0400, beatnut wrote:
> 
> > I'd like to use map module for my vhost configuration to setup user
> name in
> > root or fastcgi_pass parameter.
> > 
> > At this point i've 300 domains configured and my config look like
> this:
> > 
> > http
> > {
> >        server {
> >        ..........
> >     root /home/someuser;
> 
> [...]
> 
> > I'd like to replace this model by using map module like this
> > 
> > 
> > http
> > {
> > 
> > #map with about 300 domains
> > 
> > map $http_host $username {
> > example.com someuser;
> > escample2.com someuser2;
> > .......
> > }
> > 
> >        server {
> >        ..........
> >         root /home/$username;
> 
> [...]
> 
> > My question is -  Is this a good idea to use map like this ? Every
> request
> > needs to find out username by $http_host searching through few
> hundreds of
> > domains.  Maybe i'm wrong   but it can slow down request processing
> > significantly.
> > Any suggestions ?
> 
> Searching within a map is basically identical to searching for 
> appropriate server{} block, both use the same internal mechanism 
> (ngx_hash).  As long as you don't use regular expressions,
> lookup complexity is O(1).

So using for example:

.example.com
 or
example.*

have more complexity or  it shoud have full list of subdomains for better
performance:

www.example.com
example.com
example.somedomain.com




> Distinct server{} blocks might be more CPU-efficient due to no need to
> 
> evaluate variables and dynamically allocate memory for resulting 
> strings on each request.

My configuration include one file with server{} per domain.
exaple.com.conf
example2.conf 
etc

The main improvement i'd like to implement is to have one file with php
config like   fastcgi.conf above and then include it in every server{} 
Map module gives me this opportunity. 




> On the other hand, multiple server{} blocks consume memory for 
> each server's configuration, and map{} approach may be more 
> effective if there are many mostly identical server{} blocks.
> 
> -- 
> Maxim Dounin
> http://nginx.org/
> 
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,249475,249481#msg-249481



More information about the nginx mailing list