ПРОЕКТЫ 


  АРХИВ 


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 10:33:44PM +0500, Peter Vereshagin wrote:

> You can't take no for an answer, nginx-ru!
> 2009/10/06 16:55:54 +0400 Maxim Dounin <mdounin@xxxxxxxxxx> => To 
> nginx-ru@xxxxxxxxx :
> MD> > В любом случае, в документации про то, что fastcgi_param или $content_* 
> не работают в секции http --- нет.
> MD> 
> http://sysoev.ru/nginx/docs/http/ngx_http_fastcgi_module.html#fastcgi_param
> MD> <quote>
> MD> Директивы наследуются с предыдущего уровня при условии, что на 
> MD> данном уровне не описаны свои директивы fastcgi_param.
> MD> </quote>
> 
> 
> спасибо.
> что одна строчка fastcgi_param отменяет все остальные fastcgi_param только 
> потому что они были уровнем выше --- это когда/почему удобно? остальные-то 
> наследуются обычным порядком.

Это то, как работает конфиг для всех переменных, задающих массивы
(access_log, error_log, proxy_set_header, fastcgi_param, ...).

Если бы оно работало по другому - как минимум требовался бы
дополнительный синтаксис для очистки унаследованных значений.

> вводить приходится из-за PATH_INFO. fastcgi_split_path_info --- это, видать, 
> недавняя фича? везде рекомендуют делать так:

http://nginx.net/CHANGES

Changes with nginx 0.7.31

...
   *) Feature: the "fastcgi_split_path_info" directive.
...

> if ($uri ~ "^(.+\.php)(/.+)") { 
> set $script $1; 
> set $path_info $2; 
> } 
> fastcgi_param PATH_INFO $path_info
> 
> соответственно, все остальные fastcgi_param  тоже надо тащить в тот location 
> из-за такой вот малости.
> 
> всё равно есть пожелание чтобы можно было бы определять 
> fastcgi_split_path_info  прямо на уровне http{} тогда. или сделать так, чтобы 
> не переопределённые fastcgi_param наследовались бы.

Задавать fastcgi_split_path_info на уровне http - достаточно 
бессмысленно, т.к. где кончается имя скрипта, и начинается path 
info - обычно неизвестно никому, кроме автора скрипта.

А вот использовать переменные $fastcgi_script_name и 
$fastcgi_path_info можно где угодно, и задать все 
fastcgi_param на уровне http никто не мешает.  При этом если 
fastcgi_split_path_info в конкретном location не задан - 
$fastcgi_script_name будет содержать весь uri, а 
$fastcgi_path_info будет соответственно пустым.

Впрочем, обычную практику

    fastcgi_param  SCRIPT_FILENAME  /path/to/script;
    fastcgi_param  PATH_INFO        /path/info/if/here;
    include fastcgi_params;

тоже никто не отменял.

Maxim Dounin



 




Copyright © Lexa Software, 1996-2009.