map module - mass hosting
    Maxim Dounin 
    mdounin at mdounin.ru
       
    Wed Apr 23 12:44:59 UTC 2014
    
    
  
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).
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.
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/
    
    
More information about the nginx
mailing list