ПРОЕКТЫ 


  АРХИВ 


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: поведение try_files



On Wed, Aug 05, 2009 at 01:36:04PM +0400, Alex, the Marrch Ca'at wrote:

> Игорь, но это ведь ничего не объясняет! Как можно пользоваться в таком
> случае средствами, которые даже в самых примитивных и очевидных
> ситуациях не ясно как сработают?!

А не нужно использовать if. if работает ожидаемо только в двух случаях:

  if (...) {
      return  ...;
  }

и

  if (...) {
      rewrite  ...   last|redirect|permanent;
  }

> Вы сами-то понимаете, почему наличие if-а в данном случае влияет на
> поведение try-files?? Если да - то объясните, пожалуйста!

Я понимаю, поэтому говорю, что if использовать не надо.

> С уважением -
> Алекс Марртовский.
> 
> 2009/8/5 Igor Sysoev <is@xxxxxxxxxxxxx>:
> > On Wed, Aug 05, 2009 at 12:50:07PM +0400, Alexey Bazhin wrote:
> >
> >> Здравствуйте!
> >>
> >> Решил воспользоваться директивой try_files и тут же возникли вопросы
> >> по ее повидению.
> >>
> >> Верия nginx 0.7.61, короткий тестовый конфиг такой:
> >>
> >> worker_processes  1;
> >> events {
> >>  worker_connections 1024;
> >> }
> >>
> >> http {
> >>  include mime.types;
> >>  default_type application/octet-stream;
> >>  server {
> >>   listen 80;
> >>   server_name localhost;
> >>
> >>   location / {
> >>    if ($uri ~ .*) {
> >>     set $a a;
> >>    }
> >>    root /usr/local/nginx/html;
> >>    try_files /test.txt /index2.html /index.html =403;
> >>   }
> >>
> >>  }
> >> }
> >>
> >> Все три файла указанных в try_files существуют в /usr/local/nginx/html.
> >> При запросе корня я получаю index.html, если закомментировать if то
> >> получаю index2.html. А наскольно я понял из документации я должен
> >> получать test.txt, это так? И почему на результат влияет наличие if-а
> >> который ничего не меняет?
> >
> > Потому что if - это невидимые грабли.
> >
> > А конструкции
> >    "if ($uri ~ ..."
> > нужно заменять на
> >    "location ~ ..."
> >
> > В такой
> >
> >   location / {
> >       root /usr/local/nginx/html;
> >       try_files /test.txt /index2.html /index.html =403;
> >   }
> >
> > с существующим /usr/local/nginx/html/test.txt у меня на любой запрос
> > выдаются содержимое test.txt.
> >
> >
> > --
> > Игорь Сысоев
> > http://sysoev.ru
> >
> >

-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.