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

Gena Makhomed gmm at csdoc.com
Wed Jun 24 17:58:42 UTC 2015


On 24.06.2015 19:57, Валентин Бартенев wrote:

>>>         location /info {
>>>             fastcgi_param SCRIPT_FILENAME /www/info.php;
>>>             include       fastcgi_params;
>>>             fastcgi_pass  127.0.0.1:9000 <http://127.0.0.1:9000>;
>>>         }

>> чтобы полное счастье наступило, лучше делать всегда так,
>> что include fastcgi_params; будет первой строкой
>> в блоке, fastcgi_pass - последней, а между ними -
>> директивы fastcgi_param.

> Это не поможет.  Разве что только некоторые реализации FastCGI
> берут только последнее значение параметра, но передаваться всегда
> будут оба.  И нет никак гарантий, как это будет обработано.

По крайней мере, php-fpm обрабатывает только последний параметр,
как и ожидалось, и вряд ли это уже изменится в новых версиях PHP.

А зачем такое странное поведение fastcgi_param было реализовано?
  - https://en.wikipedia.org/wiki/Principle_of_least_astonishment

Например, "аналогичная" по своей сути директива proxy_set_header
переопределяет существующее значение, а не добавляет еще один header.

Тем более, что в протоколе CGI, на котором основан протокол FastCGI
эти параметры передаются скрипту в виде переменных окружения,
и там даже теоретически невозможно сделать несколько значений
всегда будет использовано только последнее значение параметра.

Очень странная это feature, она больше похожа на bug
Есть ли шансы, что этот bug будет исправлен в nginx?

-- 
Best regards,
  Gena



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