и все равно не работает nginx-0.7.44 + drupal 6.10 с try_files

Andrei Nigmatulin andrei.nigmatulin at gmail.com
Tue Mar 24 20:25:05 MSK 2009


On Tuesday 24 March 2009 20:03, Denis F. Latypoff wrote:
> Hello Andrei,
>
> Tuesday, March 24, 2009, 10:15:17 PM, you wrote:
> > On Tuesday 24 March 2009 18:25, Maxim Dounin wrote:
> >> Hello!
> >>
> >> On Tue, Mar 24, 2009 at 05:37:10PM +0300, Andrei Nigmatulin wrote:
> >> > On Tuesday 24 March 2009 17:09, Maxim Dounin wrote:
> >> > > Hello!
> >> > >
> >> > > On Tue, Mar 24, 2009 at 04:34:28PM +0300, Andrei Nigmatulin wrote:
> >> > > > On Tuesday 24 March 2009 15:44, Igor Sysoev wrote:
> >> > > > > On Tue, Mar 24, 2009 at 03:31:49PM +0300, Andrei Nigmatulin 
wrote:
> >> > > > > > > > 2009/03/24 14:15:37 [debug] 7764#0: *1 http script copy:
> >> > > > > > > > "QUERY_STRING" 2009/03/24 14:15:37 [debug] 7764#0: *1 http
> >> > > > > > > > script copy: "q=" 2009/03/24 14:15:37 [debug] 7764#0: *1
> >> > > > > > > > http script var:
> >> > > > > > > > "/admin/reports/status/run-cron?destination=admin/reports/
> >> > > > > > > >sta tus" 2009/03/24 14:15:37 [debug] 7764#0: *1 fastcgi
> >> > > > > > > > param: "QUERY_STRING:
> >> > > > > > > > q=/admin/reports/status/run-cron?destination=admin/reports
> >> > > > > > > >/st atus "
> >> > > > > > >
> >> > > > > > > Надо убрать из
> >> > > > > > >
> >> > > > > > >     include        /etc/nginx/fastcgi_params;
> >> > > > > > >
> >> > > > > > > строку про QUERY_STRING.
> >> > > > > >
> >> > > > > > А смысл, если все равно используется последняя ?
> >> > > > >
> >> > > > > Это точно известно ?
> >> > > >
> >> > > > У меня на 0.6.x работает именно так.
> >> > >
> >> > > Это не зависит от nginx'а, это зависит от fastcgi приложения.  Сам
> >> > > nginx просто передаст несколько name-value pairs с одинаковым
> >> > > именем.
> >> >
> >> > Понятно. В php это не используется. Каждое последующее значение с тем
> >> > же именем замещает предыдущее.
> >>
> >> Насколько я вижу - hash появился в
> >>
> >> http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/fastcgi.c?r1=1.15&r2=1.16
> >>&
> >>
> >> и с тех пор помержен в 5.2, но не в 5.1.  До соответствующего
> >> изменения - брался первый из параметров.  Что именно происходило в
> >> php4 - даже и смотреть не хочу, и так понятно что поведение
> >> зависит от версии php и закладываться на него нельзя.
> >
> > Все правильно, бардак имеется. Но камни в огород php я бы не стал кидать:
> > до 5.2 использовался код стандартной libfcgi, которую кстати, насколько я
> > вкурсе, писали те же ребята, что и спецификацию протокола на fatscgi.com.
> > В ней тоже берется первое значение из присланных. И библиотечными
> > методами нельзя получить другие значения с таким же именем.
> >
> > Тем не менее, в спецификации с fastcgi.com не указано что нельзя отсылать
> > дублирующиеся имена. А зря.
>
> FastCGI протоколу пофигу сколько раз там повторяется key=value.
> По получении key=value делается, грубо говоря, setenv (key, value, 1).
> Приложение конечно же увидит последнюю пару.

Это если приложение - php >= 5.2.

А вот php <= 5.1 (но не php-fpm, там бекпорт fastcgi кода из 5.2), судя по 
коду, увидит первую. И все приложения на libfcgi - тоже.

> > Потому что исправить nginx, чтобы он не отправлял дублирующиеся имена
> > теперь тоже нельзя, т.к. это сломает всем приложения.
>
> И не надо. Если у программиста/админа есть совесть - он позаботится об
> этом сам :)

Ну по крайней мере есть смысл отразить эти ньюансы в документации.


-- 
Andrei Nigmatulin
GPG PUB KEY 6449830D

Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take


More information about the nginx-ru mailing list