質問

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

「内部」を提案する名前付きの場所の代わりにいくつかの癖があるため、名前付きの場所の代わりに名前付きの場所も使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top