<br><br><div class="gmail_quote">On Fri, Jul 22, 2011 at 2:10 AM, Igor Sysoev <span dir="ltr"><<a href="mailto:igor@sysoev.ru">igor@sysoev.ru</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="h5">On Thu, Jul 21, 2011 at 10:53:51PM +0800, David Yu wrote:<br>
> On Thu, Jul 21, 2011 at 10:43 PM, Igor Sysoev <<a href="mailto:igor@sysoev.ru">igor@sysoev.ru</a>> wrote:<br>
><br>
> > On Thu, Jul 21, 2011 at 10:18:06PM +0800, David Yu wrote:<br>
> > > Hi,<br>
> > ><br>
> > > I wanted to ask if the same regex used in multiple conditions is the same<br>
> > > cached-compiled version?<br>
> > > Eg I need to validate the all the (sub)request params before sending it<br>
> > > upstream:<br>
> > ><br>
> > > location /foo {<br>
> > ><br>
> > > if ($time !~ /(\d\d):(\d\d):(\d\d)/) { return 400; }<br>
> > > if ($arg_time !~ /(\d\d):(\d\d):(\d\d)/) { return 400; }<br>
> > ><br>
> > > }<br>
> > ><br>
> > > #note that in the real app, I'll have lots of repeated regex for email,<br>
> > > phone, used in every if directive<br>
> > ><br>
> > > location /bar {<br>
> > ><br>
> > > if ($arg_time !~ /(\d\d):(\d\d):(\d\d)/) { return 400; }<br>
> > > set_form_input $form_time time_finished;<br>
> > > if ($form_time !~ /(\d\d):(\d\d):(\d\d)/) { return 400; }<br>
> > ><br>
> > > }<br>
> > ><br>
> > > What I'm trying to do is send the params to redis with its lua scripting<br>
> > > engine handling the *pre-validated* request.<br>
> > > Redis is single-process while nginx can have multiple workers ... so its<br>
> > > only fitting to let nginx do validation for redis :-)<br>
> ><br>
> > No, each regex is compiled separately.<br>
> ><br>
> Thanks for the quick reply.<br>
> I'm thinking maybe the nginx map can act as the regex cache for the same<br>
> ones.<br>
><br>
> set $map_regex_time $arg_time<br>
> if ( !$map_regex_time) return { 400; }<br>
><br>
> set_form_input $map_regex_time time_finished;<br>
> if (! $map_regex_time) return { 400; }<br>
><br>
> Since I'll literally have hundreds of fields using the same regex, this<br>
> might help?<br>
<br>
</div></div>I do not understand the issue.<br></blockquote><div>map $map_arg_time $map_regex_time {</div><div>  ~/(\d\d):(\d\d):(\d\d)/   1;</div><div>}</div><div><br></div><div>location /foo {</div><div>  set $map_arg_time $arg_time</div>
<div>  if ( !$map_regex_time ) return { 400; }</div><div><br></div><div>  set_form_input $map_arg_time time_finished;</div><div>  if ( !$map_regex_time ) return { 400; }</div><div><br></div><div>} </div><div><br></div><div>
<meta http-equiv="content-type" content="text/html; charset=utf-8">Since I'll literally have hundreds of fields using the same regex for validation, this might help?</div><div>If there are better ways to do validation, please do tell.</div>
<div><br></div><div>Cheers</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<font color="#888888"><br>
<br>
--<br>
</font><div><div></div><div class="h5">Igor Sysoev<br>
<br>
_______________________________________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>When the cat is away, the mouse is alone.<br>- David Yu<br>