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