2009-05-05 5 views
0

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

так:

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; 
} 

ответ

0

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

3

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

Для такого рода вещей, вам нужна настройка сценариев, такие как модуль Lua:

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; 
    ... 
} 

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

Смежные вопросы