ПРОЕКТЫ 


  АРХИВ 


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[2]: эмуляция if/else



Hello David,

Thursday, April 24, 2008, 4:02:31 PM, you wrote:

> Так никто на вопрос-то и не ответил -- про last/break. А место в самом деле 
> не очень понятное. Вот на 
> http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html#rewrite 
> написано:

> ===============
> Если же эти директивы поместить в location /download/, то нужно заменить 
> флаг last на break, иначе nginx сделает 10 циклов и вернёт ошибку 500:

>         location /download/ {
>             rewrite  ^(/download/.*)/media/(.*)\..*$  $1/mp3/$2.mp3  break;
>             rewrite  ^(/download/.*)/audio/(.*)\..*$  $1/mp3/$2.ra   break;
>             return   403;
>         }
> ===============

> Во-первых, ПОЧЕМУ last вызовет зацикливание? После первого же рерайта запрос 
> перестанет попадать в паттерн -- там же media заменится на mp3. Во-вторых, 
> куда всё-таки пойдёт управление после break? На return? Или поскольку return 
> тоже "директива ngx_http_rewrite_module" -- дальше пойдёт отдача из этой 
> локации статикой?

а потестить?

>> Всегда были не совсем ясны сходство и различия break;, rewrite break и
>> rewrite last.
>> 
>> Обычная задача. Существующие файлы отдавать статикой, несуществующие
>> проксировать. Сейчас написано два if: -f и !-f.
>> 
>> Как это написать более правильно?
>> 
>> Может так? Есть комментарии по поводу этого куска?
>> 
>> location / {
>> if (-f $request_filename) {
>> break;
>> root html;
>> }
>> proxy_pass http://127.0.0.1:1234;
>> }
>> Вдогонку.
>> 
>> proxy_pass http://localhost/; # (!!!) / в конце
>> 
>> это то же самое, что
>> 
>> rewrite .* /;
>> proxy_pass http://localhost;
>> ?
>> 
>> Заранее спасибо за помощь.
>> 





-- 
Best regards,
 Denis                            mailto:denis@xxxxxxxxxx




 




Copyright © Lexa Software, 1996-2009.