Maximum URL length and the limit_zone module

marc at corky.net marc at corky.net
Fri Aug 10 11:17:48 MSD 2007


Igor Sysoev wrote:
> On Fri, Aug 10, 2007 at 07:19:54AM +0100, marc at corky.net wrote:
>
>   
>> Hi,
>>
>>
>> Igor Sysoev wrote:
>>     
>>> On Thu, Aug 09, 2007 at 01:31:57PM +0100, Just Marc wrote:
>>>
>>>  
>>>       
>>>> I have some long non-English file names that when url-encoded and 
>>>> prepended with a path, exceed the 255 limit check in the limit_zone 
>>>> module:
>>>>
>>>>
>>>> I am using limit_zone like so:
>>>>   limit_zone   one  $request_uri   10m;
>>>>
>>>>
>>>> http/modules/ngx_http_limit_zone_module.c:ngx_http_limit_zone_handler
>>>>
>>>>   if (len > 255) {
>>>>       ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
>>>>                     "the value of the \"%V\" variable "
>>>>                     "is more than 255 bytes: \"%V\"",
>>>>                     &ctx->var, vv);
>>>>       return NGX_DECLINED;
>>>>   }
>>>>
>>>> Is there any special reason to limit this to 255 bytes?   I think this 
>>>> can be increased safely, no?
>>>>    
>>>>         
>>> It can be increased to 65536.
>>>
>>>  
>>>       
>> Great
>>
>>     
>>>> Is there a way to hash the request_uri and use that for limit_zone?
>>>>    
>>>>         
>>> $request_uri is (as in Apache) unparsed uri+args. I do not think that is
>>> good key. It's better to use $uri - it already decoded (so it may be
>>> up to 3 times less) and without $args.
>>>
>>>  
>>>       
>> I have this code, where post_action is supposed to run /done when the 
>> request ends:
>>
>> location /protected/ {
>>          internal;
>>
>>           alias   /;
>>                 post_action /done;
>> }
>>
>> Unfortunately, it seems that "/done" is what is passed as $uri to 
>> limit_zone.   Is there anything else I can do?
>>
>> Marc
>>
>> Unfortunately in my test it appears to be getting only "/done":
>>     
>
> BTW, why do you use limit_conn in post_action ?
> You should use it in /protected/ only or even before X-A-R.
>   

I am not using it in the post_action, my example was incorrect.   I use 
it in a different location.

Using your $ouri example in this location worked.  Thank you!

What is X-A-R ?

Marc






More information about the nginx mailing list