Re: map module - mass hosting

2014-04-24 Thread beatnut
Thank You for explanation and advise.


Maxim Dounin Wrote:
---
 Hello!
 
 On Wed, Apr 23, 2014 at 09:27:33AM -0400, beatnut wrote:
 
 [...]
 
   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
 
 While wildcards require more work on each lookup, complexity is 
 still O(1).  Note that regular expressions != wildcard names.
 
   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. 
 
 This is not something I would recommend to do.  If you have 
 server{} block per domain, you should have enough data to write 
 configuration without introducing another map ($document_root, 
 $server_name, and so on).
 
 Please also see this FAQ article:
 
 http://nginx.org/en/docs/faq/variables_in_config.html
 
 -- 
 Maxim Dounin
 http://nginx.org/
 
 ___
 nginx mailing list
 nginx@nginx.org
 http://mailman.nginx.org/mailman/listinfo/nginx

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

___
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx


Re: map module - mass hosting

2014-04-23 Thread Maxim Dounin
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/

___
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx


Re: map module - mass hosting

2014-04-23 Thread beatnut
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@nginx.org
 http://mailman.nginx.org/mailman/listinfo/nginx

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

___
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx


Re: map module - mass hosting

2014-04-23 Thread Maxim Dounin
Hello!

On Wed, Apr 23, 2014 at 09:27:33AM -0400, beatnut wrote:

[...]

  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

While wildcards require more work on each lookup, complexity is 
still O(1).  Note that regular expressions != wildcard names.

  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. 

This is not something I would recommend to do.  If you have 
server{} block per domain, you should have enough data to write 
configuration without introducing another map ($document_root, 
$server_name, and so on).

Please also see this FAQ article:

http://nginx.org/en/docs/faq/variables_in_config.html

-- 
Maxim Dounin
http://nginx.org/

___
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx