Welcome! Log In Create A New Profile

Advanced

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

Maxim Dounin
July 04, 2015 03:36AM
Hello!

On Wed, Jun 24, 2015 at 08:58:42PM +0300, Gena Makhomed wrote:

> 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.

Just FYI, это зависит от версии PHP. До 5.3, если не ошибаюсь,
порядок был обратный.

> А зачем такое странное поведение fastcgi_param было реализовано?
> - https://en.wikipedia.org/wiki/Principle_of_least_astonishment
>
> Например, "аналогичная" по своей сути директива proxy_set_header
> переопределяет существующее значение, а не добавляет еще один header.

Это не так. Если задать две директивы proxy_set_header с одним и
тем же заголовком, то оба заголовка отправятся на бекенд. Но, в
отличии от FastCGI, протокол HTTP однозначно специфицирует, что с
этим делать.

Единственный нюанс состоит в том, что при использовании
proxy_set_header из исходного запроса удаляются заголовки,
одноимённые добавляемому. Это сделано в первую очередь для того,
можно было изменять исходный запрос. В случае fastcgi аналогично
обрабатываются HTTP_* параметры.

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

Ну вот как раз проблема в том, что в протоколе FastCGI возможность
отправить два одинаковых параметра добавилась, а что с этим потом
делать - спецификация не описывает.

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

Поведение nginx'а сейчас: послать на бекенд ровно то, что
администратор написал в конфиге, и оно консистентно для всех
соответствующих модулей (proxy, fastcgi, scgi, uwsgi). Менять это
поведение не планируется.

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

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

Amanda Sproule June 23, 2015 12:58PM

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

Gena Makhomed June 24, 2015 11:36AM

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

Amanda Sproule June 24, 2015 05:06PM

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

Валентин Бартенев June 26, 2015 09:48AM

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

Amanda Sproule July 09, 2015 11:00AM

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

Amanda Sproule June 26, 2015 12:12PM

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

Konstantin Tokarev June 26, 2015 01:08PM

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

Amanda Sproule June 26, 2015 01:40PM

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

Amanda Sproule June 26, 2015 02:36PM

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

Gena Makhomed June 26, 2015 03:20PM

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

Amanda Sproule June 26, 2015 04:06PM

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

Gena Makhomed June 26, 2015 04:26PM

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

Igor M Podlesny June 26, 2015 04:40PM

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

S.A.N June 26, 2015 05:14PM

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

Igor M Podlesny June 27, 2015 01:26AM

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

S.A.N June 27, 2015 05:12AM

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

Daniel Podolsky June 27, 2015 05:32AM

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

Amanda Sproule June 26, 2015 04:44PM

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

Gena Makhomed June 26, 2015 05:16PM

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

Daniel Podolsky June 26, 2015 05:18PM

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

Igor M Podlesny June 27, 2015 01:34AM

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

Amanda Sproule June 26, 2015 05:50PM

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

Amanda Sproule July 09, 2015 08:16AM

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

Валентин Бартенев July 09, 2015 09:26AM

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

Maxim Dounin July 09, 2015 09:30AM

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

Andrey Kopeyko June 24, 2015 12:08PM

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

Gena Makhomed June 24, 2015 12:48PM

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

Валентин Бартенев June 24, 2015 12:58PM

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

Gena Makhomed June 24, 2015 02:00PM

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

S.A.N June 25, 2015 05:32PM

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

Валентин Бартенев June 26, 2015 09:34AM

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

S.A.N June 26, 2015 09:50AM

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

Amanda Sproule June 26, 2015 06:22PM

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

Maxim Dounin July 04, 2015 03:36AM

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

Igor M Podlesny June 26, 2015 01:40PM

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

Gena Makhomed June 26, 2015 02:22PM

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

Igor M Podlesny June 26, 2015 02:44PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 296
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready