Maximum URL length and the limit_zone module

marc at corky.net marc at corky.net
Fri Aug 10 10:19:54 MSD 2007


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":






More information about the nginx mailing list