Same regex caching

Igor Sysoev igor at sysoev.ru
Thu Jul 21 14:43:57 UTC 2011


On Thu, Jul 21, 2011 at 10:18:06PM +0800, David Yu wrote:
> Hi,
> 
> I wanted to ask if the same regex used in multiple conditions is the same
> cached-compiled version?
> Eg I need to validate the all the (sub)request params before sending it
> upstream:
> 
> location /foo {
> 
> if ($time !~ /(\d\d):(\d\d):(\d\d)/) { return 400; }
> if ($arg_time !~ /(\d\d):(\d\d):(\d\d)/) { return 400; }
> 
> }
> 
> #note that in the real app, I'll have lots of repeated regex for email,
> phone, used in every if directive
> 
> location /bar {
> 
> if ($arg_time !~ /(\d\d):(\d\d):(\d\d)/) { return 400; }
> set_form_input $form_time time_finished;
> if ($form_time !~ /(\d\d):(\d\d):(\d\d)/) { return 400; }
> 
> }
> 
> What I'm trying to do is send the params to redis with its lua scripting
> engine handling the *pre-validated* request.
> Redis is single-process while nginx can have multiple workers ... so its
> only fitting to let nginx do validation for redis :-)

No, each regex is compiled separately.


-- 
Igor Sysoev



More information about the nginx mailing list