ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CGI::Fast && $ENV{HTTP_*}



Hello!

On Tue, Oct 06, 2009 at 05:11:31PM +0500, Peter Vereshagin wrote:

> We all come down to Monterey, nginx-ru!
> 
> Проблема была в том, что fastcgi_param  CONTENT_TYPE и fastcgi_param  
> CONTENT_LENGTH прописанные в секции http{}, не действуют на конкретный 
> location внутри неё. Штатное ли это поведение? возможно, это связано с тем, 
> что $content_type и $content_length не считаются определёнными вне, например, 
> секции server{} ? я как вижу по дампу 
> https://gist.github.com/202883/e51f797e43f457e90deb0592e649d274751c8ecb сами 
> директивы конфига не сработали ( на тот момент были прописаны  в контексте 
> location только PATH_INFO SCRIPT_FILENAME QUERY_STRING REQUEST_METHOD ) но 
> лучше всё таки кто-нибудь ещё бы это почитал.
> В любом случае, в документации про то, что fastcgi_param или $content_* не 
> работают в секции http --- нет.

http://sysoev.ru/nginx/docs/http/ngx_http_fastcgi_module.html#fastcgi_param

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

Maxim Dounin

> 
> 
> 2008/07/31 01:14:34 +0400 Igor Sysoev <is@xxxxxxxxxxxxx> => To 
> nginx-ru@xxxxxxxxx :
> IS> On Wed, Jul 30, 2008 at 07:34:38PM +0500, Peter Vereshagin wrote:
> IS> > 2008/07/30 17:56:28 +0400 Igor Sysoev <is@xxxxxxxxxxxxx> => To 
> nginx-ru@xxxxxxxxx :
> IS> > IS> On Wed, Jul 30, 2008 at 05:12:28PM +0500, Peter Vereshagin wrote:
> IS> > IS> > ===
> IS> > IS> > map { $ENV{ $_ } = $ENV{ "HTTP_$_" } } qw/CONTENT_LENGTH 
> CONTENT_TYPE/
> IS> > IS> >       if $ENV{ 'REQUEST_METHOD' } eq 'POST';
> IS> > IS> > ===
> IS> > IS> > 
> IS> > IS> > перед "new CGI::Fast" --- и переменные им берутся как надо.
> IS> > IS> > 
> IS> > IS> > Вопрос в чём: я всё оставляю как сейчас, или это бага nginx? а то 
> мы спецификаций да сишных исходников не читатели, только 
> почитатели-причитатели :)
> IS> > IS> 
> IS> > IS> nginx передаёт указанные CONTENT_TYPE и CONTENT_LENGTH.
> IS> > 
> IS> > ok, указанные где? не в запросе клиента? кабы передавал бы, я б не 
> спрашивал тут. А то может у меня броузер ( links-hacked ) такой неправильный.
> IS> 
> IS> Указанные в директивах fastcgi_param.
> IS> 
> IS> > IS> Кроме того, есть ещё HTTP_CONTENT_TYPE и HTTP_CONTENT_LENGTH из 
> запроса
> IS> > IS> клиента, которые тоже передаются.
> IS> > 
> IS> > тогда вопроc, делать мне что с этим? если в моём конфиге что-то забыл, 
> то что? если в perl надо действительно модифицировать %ENV, то оставляю эти 2 
> строки и выкладываю на CPAN's pause.
> IS> > конкретно HTTP_* не цепляется в CGI.pm . А без "HTTP_" переменных не 
> видно --- или мне с этим в fastcgi.com, к авторам FCGI.(pm|so), а не сюда?
> IS> 
> IS> Можно посмотреть в tcpdump'е, что nginx передаёт перлу.
> 
> 73! Peter pgp: A0E26627 (4A42 6841 2871 5EA7 52AB  12F8 0CE1 4AAC A0E2 6627)
> -- 
> http://vereshagin.org
> 



 




Copyright © Lexa Software, 1996-2009.