Include order and variables definition in configuration

Maxim Dounin mdounin at mdounin.ru
Tue Feb 25 01:49:22 UTC 2014


Hello!

On Tue, Feb 25, 2014 at 01:05:44AM +0100, B.R. wrote:

> Hello Francis and Maxim,
> 
> I understand very well that $fastcgi_script_name value is defined after
> fastcgi_split_path_info is called.
> However I was wondering about other variables which value depend on
> $fastcgi_script_name, for example when PHP's SCRIPT_NAME has been defined
> in the already included fastcgi.conf.

There is no "variables which value depend on 
$fastcgi_script_name".  The fastcgi_param directive defines 
parameters to be sent to FastCGI application.

> Here are 2 examples:
> server {
>         listen               80;
>         server_name     b.cd;
>         try_files            $uri $uri/ /index.php$uri;
> 
>         root    /var/www;
>         index   index.html index.htm index.php;
>         include fastcgi.conf;
>         fastcgi_buffers 8 8k;
> 
>         location ~ ^/index\.php {
>                 fastcgi_split_path_info ^(/index\.php)(/.*)$;
>                 fastcgi_param PATH_INFO $fastcgi_path_info;
>                 fastcgi_pass unix:/var/run/php5-fpm.sock;
>         }
> }
> 
> The previous configuration seems to fail (returns 200 with blank page, no
> error).

The above configuration has only one fastcgi_param in 
"location ~ ^/index\.php".  And there are no parameters which 
include $fastcgi_script_name, so your previous question is 
completely irrelevant here.

Note (quote from http://nginx.org/r/fastcgi_param):

: These directives are inherited from the previous level if and only 
: if there are no fastcgi_param directives defined on the current 
: level.

There are fastcgi_param directives in "location ~ ^/index\.php", 
so fastcgi_params directives used on previous levels are not 
inherited.

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



More information about the nginx mailing list