On Fri, Oct 09, 2009 at 09:32:54PM +0700, Denis F. Latypoff wrote:
> Hello Igor,
>
> Friday, October 9, 2009, 8:59:25 PM, you wrote:
>
> > On Fri, Oct 09, 2009 at 05:47:51PM +0400, Vasiliy G Tolstov wrote:
>
> >> > Вместо
> >> >
> >> > location ~ "^/(CHANGELOG|COPYRIGHT|INSTALL\.mysql|INSTALL\.pgsql|INSTALL|LICENSE|MAINTAINERS|UPGRADE)\.txt" {
> >> > deny all;
> >> > }
> >> >
> >> > лучше сделать
> >> > location = /CHANGELOG { deny all; }
> >> > location = /INSTALL.mysql { deny all; }
> >> > location = /INSTALL.pgsql { deny all; }
> >> > location = /INSTALL { deny all; }
> >> > и т.д.
> >> >
> >> >
> >>
> >> А если таких location =200 ? тоже стоит сделать location для каждого или
> >> регуляркой?
>
> > В этом случае регулярное выражение может быть быстрее.
>
> 99% запросов в этот location не попадут, но каждый из них
> будет проверятся на соответствие этому регулярному выражению, а в
> итоге уйдет в location / { }.
>
> Так что думаю сбалансированное дерево из 200 элементов в этом случае
> предпочтительней. Тем более, что в худшем случае будет log_e(200) = 5
> memcpy() вызовов, и неизвестно во что скомпилится регулярка с 200
> словами.
>
> Ы?
Там дерево не совсем сбалансировано, но, возможно, да, оно может оказаться
быстрее такого регулярного выражения.
--
Игорь Сысоев
http://sysoev.ru