ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Вложенныедирективыилиобъединениеусловий



On Wednesday 16 April 2008 20:28, Andrey Ignatov wrote:
> On Wed, Apr 16, 2008 at 11:57:17AM +0000, Larry Gingras wrote:
> > Переписываю очень сложную и навороченную конфигурацию apache под nginx
> > (для реализации связки nginx+apache).
> > И вот например мне нужно тут в одной штуке нужно проверить несколько
> > условий. В apache я просто писал несколько RewriteCond подряд. Тут в
> > одном if несколько условий поставить нельзя. И, как оказалось, вложенные
> > if не поддерживаются тоже. Так что же делать в таком случае?
> > Вот один из примеров, который не знаю как расписать правильно:
> > if ($request_uri ~* \.(jpg|gif|wmv|flv)$) {
> >     if ($request_uri !~ ^/webmasters/) {
> >             if($invalid_referer) {
> >                     return 403;
> >             }
> >     }
> > }
>
> Можно попробовать что-нибудь в таком духе:
>
> if ($request_uri ~* \.(jpg|gif|wmv|flv)$) {
>       set $i  "a";
> }
>
> if ($request_uri !~ ^/webmasters/) {
>       set $i  "a$i"
> }
>
> if ($invalid_referer) {
>       set $i  "a$i"
> }
>
> if ($i = "aaa") {
>       return 403;
> }
>
> Не красиво, но др. вариантов не знаю.
Вот это я думаю наиболее изящное и хорошее решение
Потому что мне тут предлагают разбивать всё на отдельные локейшены, а учитывая 
что там помимо этого примера ещё мама не горюй таких вещей, то там ужас что 
было бы. А с таким подходом очень много локейшенов удастся сэкономить.


 




Copyright © Lexa Software, 1996-2009.