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
|