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