質問
nginxの.confファイルで$ memcached_keysが長すぎるという問題があります。 memcachedモジュールを使用していますが、URLの一部が長すぎます。私は代わりにURLのMD5ハッシュをユーザーにしようとしていますが、その間に変数に格納されている文字列の長さを確認できる方法があるかどうか疑問に思っていました。
so:
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;
}
解決
私は前向きではありませんが、nginx config言語内でそれができるとは思いません。存在する場合、ここに文書化されていると思われ、何も表示されません。
他のヒント
古い質問だが....
この種のことを行うには、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;
...
}
「内部」を提案する名前付きの場所の代わりにいくつかの癖があるため、名前付きの場所の代わりに名前付きの場所も使用できます。
所属していません StackOverflow