Use variable instead of flag for modules.

Maxim Dounin mdounin at mdounin.ru
Tue Feb 23 23:51:04 MSK 2010


Hello!

On Tue, Feb 23, 2010 at 10:15:06AM -0800, Matthieu Tourne wrote:

> Hi,
> 
> I'm currently developing a filter module, and I want to activate it based on
> certain conditions.
> The problem is that the flag is read when the configuration is parsed, and
> putting
> my_module off; inside an if statement has no effect.
> 
> I'm now planning on having my module taking variable that can be modified
> inside an if statement. But I haven't been able to find any existing module
> that does that.

>From developer point of view there is no such thing as "if" 
statement.  There is locations.  Using non-rewrite directives 
inside "if" means they are used in implicit location created by 
"if".  Note that this produces various weird things as documented 
here:

http://wiki.nginx.org/IfIsEvil

> So I was wondering if the usual way to do this was through rewrites to
> location that have modules enabled or not.
> The problem with that being if you have a lot of conditions then the
> configuration starts being very hard to follow.
> 
> Any ideas on how to deal with this ?

Personally I don't recommend allowing anything inside "if" due to 
the problems it produce.  Either follow "jump to appropriate 
configuration" paradigm (via rewrite or return), or implement 
needed logic in your own module (in case it's common enough), or 
support variables to control your module.

Maxim Dounin



More information about the nginx mailing list