Нахождение длины силы в файле nginx.conf - PullRequest
0 голосов
/ 05 мая 2009

У меня проблема с тем, что мои $ memcached_keys слишком длинные в моем файле .conf для nginx. Я использую модуль memcached, но некоторые из моих URL слишком длинные. Вместо этого я пытаюсь использовать MD5-хэши URL-адресов, но в то же время мне просто интересно, можно ли как-нибудь проверить длину строки, хранящейся в переменной.

так:

set $memcached_key "byp-$uri";
if ($args) {
    set $memcached_key "byp-$uri?$args";
}

if (len($memcache_key) < 250) {
     memcached_pass 127.0.0.1:11211;
     error_page 404 = @cache_miss;
     error_page 502 = @cache_miss;
}
else {
    pass to @cache_miss;
} 

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

Старый вопрос, но ....

Чтобы сделать это, вам понадобятся скриптовые настройки, такие как Lua Module:

location / {
    set_by_lua $memcached_key '
        if not ngx.var.args then 
            return "byp-" ..  ngx.var.uri
        else 
            return "byp-" ..  ngx.var.uri .. "?" ..  ngx.var.args
        end
    ';
    content_by_lua '
        local string = string;
        if string.len($memcached_key) < 250 then
            ngx.exec("/memcached");
        else
            ngx.exec("/cache_miss");
        end
    ';
}
location /memcached {
    internal;
    memcached_pass 127.0.0.1:11211;
    error_page 404 = /cache_miss;
    error_page 502 = /cache_miss;
}
location /cache_miss {
    internal;
    ...
}

Предложите "внутренние" местоположения вместо именованных местоположений из-за нескольких причуд с последним, но также можно использовать именованные местоположения.

0 голосов
/ 06 мая 2009

Я не уверен, но я не думаю, что это можно сделать на языке конфигурации nginx. Я подозреваю, что это было бы задокументировано здесь , если бы оно существовало, и я ничего не вижу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...