2009-05-05 7 views
0

nginxの.confファイルで$ memcached_keysが長すぎる問題が発生しています。私はmemcachedモジュールを使用していますが、私のURLのいくつかは長すぎます。私は代わりにURLのMD5ハッシュをユーザーにしようとしていますが、その間に変数に格納されている文字列の長さをチェックできる方法があるかどうか疑問に思っていました。そうnginx.confファイルの強度の長さを調べる

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

答えて

0

私は肯定的ではないんだけど、私はそれがnginxの設定言語内で行うことができるとは思いません。私はそれが存在すればそれがhereと文書化されていると思うし、何も見えない。

3

旧質問けど....

この種のものを行うには、あなたは、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; 
    ... 
} 

を「内部」の場所の代わりに起因するという名前の場所を提案します後者のいくつかの癖にもかかわらず、名前の付いた場所も同様に使用することができます。

関連する問題