Question

J'ai un problème avec mon $ memcached_keys trop long dans mon fichier .conf pour nginx. J'utilise le module memcached mais certaines de mes URL sont trop longues. Je suis en train d'essayer plutôt d'utiliser les hachages MD5 des utilisateurs MD5, mais entre-temps, je me demandais s'il était possible de vérifier la longueur d'une chaîne stockée dans une variable.

alors:

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;
} 
Était-ce utile?

La solution

Je ne suis pas positif, mais je ne pense pas que cela puisse être fait dans le langage de configuration nginx. Je soupçonne que cela serait documenté ici s'il existait déjà et que je ne vois rien.

Autres conseils

Ancienne question mais ....

Pour faire ce genre de chose, vous avez besoin d'une configuration de script telle que le module 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;
    ...
}

Suggérer " internal " emplacements au lieu d'emplacements nommés en raison de quelques bizarreries avec ce dernier, mais les emplacements nommés peuvent également être utilisés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top