nested location inheritance

Maxim Dounin mdounin at mdounin.ru
Fri May 22 19:34:29 UTC 2015


Hello!

On Sat, May 23, 2015 at 01:08:19AM +0700, Igor M Podlesny wrote:

> 2015-01-12 20:30 GMT+07:00 Maxim Dounin <mdounin at mdounin.ru>:
> 
> > Hello!
> >
> > On Mon, Jan 12, 2015 at 04:06:33PM +0300, Vasil Mikhalenya wrote:
> >
> > > Добрый день,
> > >
> > > озадачен вопросом составления казалось бы тривиального конфига, задача -
> > > для определенно урла выключить логирование, обойдясь без дублирования
> > > конфигурации. Однако, как я понял, директивы fastcgi_pass не наследуются
> > во
> > > вложенный location.
> >
> > Директивы fastcgi_pass - не наследуются, однако все остальные
> > директивы fastcgi_* - наследуется.
> >
> 
> Вот не замечаю такого для fastcgi_param, ибо если "include
>  fastcgi_params;" находится в "location /", то
> нормального выполнения sub-"location ~ \.php$" не происходит. Лечится
> переносом include в этот самый sub-location.
> Абсолютно аналогично (ибо частный случай) и с отдельно стоящей
> 
> fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
> 
> -- если это перенести в "location /", то скрипты опять же не работают.

Если же есть подзрение, что в nginx'е что-то работает не так, как 
должно, имеет смысл привести проблемную и работающаю конфигурации 
полностью.

Из текста следует, что проблема должна проявляться на двух таких 
конфигурациях:

    location / {
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:8082;
        }
    }

и

    location / {
        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:8082;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }

Однако обе конфигурации формируют совершенно одинаковый 
fastcgi-запрос, параметры SCRIPT_FILENAME совпадают:

2015/05/22 22:18:37 [debug] 49590#0: *1 fastcgi param: "SCRIPT_FILENAME: /tmp/index.php"
2015/05/22 22:19:30 [debug] 49596#0: *1 fastcgi param: "SCRIPT_FILENAME: /tmp/index.php"

Т.е., если проблема и есть, то она в нюансах.
Или проблемы на самом деле нет, и вы просто что-то делаете не так.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru