question about the context of map directive

Maxim Dounin mdounin at
Thu May 5 00:35:47 MSD 2011


On Thu, May 05, 2011 at 02:59:21AM +0800, 杨镭 wrote:

> Hi,
> The context of map directive is *http* as documented on This


> means all the requests will go through the map filter phase.

No.  Map directive creates a variable and only does something when 
(and if) the variable is accessed.  There is no performance 
penalty for processing requests which doesn't use the variable.

> This is not ideal when you have many virtual hosts.
> For example, we've 50+ virtual hosts. When one of them need map variables,
> the others automatically inherited those settings because there is no way to
> limit it to server context.
> If this is the situation, can someone know the internals of nginx explain
> why the map module can't work at server level.

Changing map module to provide data based on per-server configs is 
possible, but obviously will require extra code.

Maxim Dounin

More information about the nginx mailing list