Trovare la lunghezza di un punto di forza in un file nginx.conf
-
05-07-2019 - |
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;
}
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.