Наследование fastcgi_param

Amanda Sproule paranoidchaos at gmail.com
Tue Jun 23 16:56:30 UTC 2015


Здравствуйте.

# uname -a
FreeBSD test 10.1-RELEASE-p10 FreeBSD 10.1-RELEASE-p10 #0: Wed May 13
06:54:13 UTC 2015
root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
 amd64

# nginx -v
nginx version: nginx/1.8.0

# php -v
5.6.10

Имеется такая тестовая конфигураци.

server {
    ....
    ....

    root   /www;
    index  index.html index.php;

    include        fastcgi_params;
    fastcgi_index  index.php;

    location /info {
        fastcgi_param SCRIPT_FILENAME /www/info.php;
        fastcgi_pass 127.0.0.1:9000;
    }

    .....
    ......
}

Проблема в том, что в локейшене /info не наследуются fastcgi_param (все),
указанный в контексте server,  если происходит переопределение одного
fastcgi_param параметра внутри локейшена. PHP-FPM возвращает код статуса
200 и пустой ответ. Экспериментальным путём выяснил, что минимальные
необходимые параметры передаваемые PHP-FPM следующие:

location /info {
    fastcgi_param  REQUEST_METHOD     $request_method;
    fastcgi_param SCRIPT_FILENAME /www/info.php;
    fastcgi_pass 127.0.0.1:9000;
}

В этом случае PHP-FPM обрабатывает скрипт /www/info.php, но nginx не
передал все остальные fastcgi_param из файла fastcgi_params, которые должны
были быть унаследованы.

В документации описан момент

"""
Директивы наследуются с предыдущего уровня при условии, что на данном
уровне не описаны свои директивы fastcgi_param.
"""

выходит если я переопределяю (устанавливаю) какой-либо fastcgi_param параметр,
то наследования fastcgi_params вовсе отменяется? Для чего тогда это
наследование? Почему нельзя наследовать с верхнего уровня и иметь
возможность переопределить какой-либо параметр?

Спасибо.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20150623/2274444e/attachment-0001.html>


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