Welcome! Log In Create A New Profile

Advanced

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

Maxim Dounin
October 06, 2009 07:02PM
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@mdounin.ru> => To nginx-ru@sysoev.ru :
> 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
Subject Author Posted

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

Peter Vereshagin October 06, 2009 08:12AM

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

Maxim Dounin October 06, 2009 09:14AM

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

Peter Vereshagin October 06, 2009 01:22PM

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

Maxim Dounin October 06, 2009 07:02PM

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

Peter Vereshagin October 07, 2009 07:58AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 255
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready