Problem with inheriting fastcgi params

Michael Shadle mike503 at gmail.com
Sat Jun 6 06:33:39 MSD 2009



On Jun 5, 2009, at 7:03 PM, Maxim Dounin <mdounin at mdounin.ru> wrote:

> Hello!
>
> On Fri, Jun 05, 2009 at 02:12:50PM -0700, Cliff Wells wrote:
>
>> On Sat, 2009-06-06 at 00:17 +0400, Maxim Dounin wrote:
>>> Hello!
>>>
>>> On Fri, Jun 05, 2009 at 12:36:36PM -0700, Michael Shadle wrote:
>>>
>>>> I have my normal fastcgi params in my main nginx.conf file, under  
>>>> server {}
>>>>
>>>> i.e.:
>>>>
>>>> fastcgi_param QUERY_STRING $query_string;
>>>> fastcgi_param REQUEST_METHOD $request_method;
>>>> fastcgi_param CONTENT_TYPE $content_type;
>>>> fastcgi_param CONTENT_LENGTH $content_length;
>>>> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
>>>> fastcgi_param SCRIPT_NAME $fastcgi_script_name;
>>>> fastcgi_param REQUEST_URI $request_uri;
>>>> fastcgi_param DOCUMENT_URI $document_uri;
>>>> fastcgi_param DOCUMENT_ROOT $document_root;
>>>> fastcgi_param SERVER_PROTOCOL $server_protocol;
>>>> fastcgi_param GATEWAY_INTERFACE CGI/1.1;
>>>> fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
>>>> fastcgi_param REMOTE_ADDR $remote_addr;
>>>> fastcgi_param REMOTE_PORT $remote_port;
>>>> fastcgi_param SERVER_ADDR $server_addr;
>>>> fastcgi_param SERVER_PORT $server_port;
>>>> fastcgi_param SERVER_NAME $http_host;
>>>> fastcgi_ignore_client_abort on;
>>>> fastcgi_buffers 32 8k;
>>>> fastcgi_index index.php;
>>>>
>>>>
>>>> The problem is, whenever I want to add a variable (maybe override  
>>>> too,
>>>> I forget) it seems to clear all the other ones out:
>>>>
>>>>               location ~ \.php$ {
>>>>                        fastcgi_pass 127.0.0.1:11003;
>>>>                        fastcgi_param HTTPS on;
>>>>                }
>>>>
>>>> Now, only fastcgi_param HTTPS is set. no more SCRIPT_FILENAME so  
>>>> it's broken.
>>>
>>> It's expected and documented behaviour.  All array-type settings
>>> behave like this: they are inherited from upper levels only if
>>> none defined at this particular level.
>>
>> Interesting.   I was aware of the limitation Michael mentions, but
>> didn't realize this was the particular mechanism.   So I assume that
>> "array-type" is indicated by the variable prefixes, i.e. fastcgi_*,
>> proxy_*, etc?
>
> Yes, it's generic mechanism.  No, "array-type" isn't indicated by
> anything.  It's just includes any directives that may be repeated
> and effectively append items to some array internally.  This
> includes access_log, error_log, fastcgi_param, proxy_set_header,
> ssi_types (and other *_types as well), access rules (allow + deny)
> and so on.
>
> From user-level point of view this behaviour is part of config
> syntax.  If it wasn't working this way - some other syntax would be
> required to make it possible to clear inherited values.
>
> From developer point of view - it's just easy.  Inheritance
> involve just copy of array pointer from upper level if there are
> no directives defined at particular level.
>

Doesn't that mean it could be supported how I originally had asked?


> Maxim Dounin
>
>
>>
>> If you'll confirm this, I'll get it into the FAQ.
>>
>> Cliff
>>
>> -- 
>> http://www.google.com/search?q=vonage+sucks
>>
>>
>





More information about the nginx mailing list