Domanda

Sto riscontrando un problema con il mio $ memcached_keys troppo lungo nel mio file .conf per nginx. Sto usando il modulo memcached ma alcuni dei miei URL sono troppo lunghi. Sto invece cercando di utilizzare gli hash MD5 degli URL, ma nel frattempo mi chiedevo solo se c'era un modo per verificare la lunghezza di una stringa memorizzata in una variabile.

così:

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;
} 
È stato utile?

Soluzione

Non sono positivo, ma non penso che possa essere fatto nel linguaggio di configurazione di nginx. Sospetto che sarebbe documentato qui se esistesse, e non vedo nulla.

Altri suggerimenti

Vecchia domanda ma ....

Per fare questo genere di cose, hai bisogno di una configurazione di script come il Modulo 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;
    ...
}

Suggerisci " interno " posizioni anziché posizioni nominate a causa di alcune stranezze con quest'ultima, ma è possibile utilizzare anche posizioni denominate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top