поведение try_files

Maxim Dounin mdounin at mdounin.ru
Fri Aug 7 01:30:06 MSD 2009


Hello!

On Wed, Aug 05, 2009 at 02:19:18PM +0400, Kirill A. Korinskiy wrote:

> At Wed, 5 Aug 2009 14:11:25 +0400,
> Igor Sysoev <is at rambler-co.ru> wrote:
> 
> > > ну а как же вариант с
> > > 
> > > if (...) {
> > >     set ... ...;
> > > }
> > > 
> > > он же тоже крайне ожидаем.
> > 
> > А в этом варианте есть подводные грабли, из-за которых всё вместе
> > может работать не так, как ожидается.
> > 
> 
> например?

На уровне server{} всё будет работать.  А на уровне location любой 
if без выхода в return/rewrite ... last - это грабли.

В примерах ниже можешь заменить "# nothing" на set - результат не 
изменится:

        # request will be sent to backend without uri changed
        # to '/' due to if

        location /proxy-pass-uri {
            proxy_pass http://127.0.0.1:8080/;

            set $true 1;

            if ($true) {
                # nothing
            }
        }

        # try_files wont work due to if

        location /if-try-files {
             try_files  /file  @fallback;

             set $true 1;

             if ($true) {
                 # nothing
             }
        }

Maxim Dounin





More information about the nginx-ru mailing list