モジュール ngx_http_memcached_module

設定例
ディレクティブ
     memcached_bind
     memcached_buffer_size
     memcached_connect_timeout
     memcached_gzip_flag
     memcached_next_upstream
     memcached_next_upstream_timeout
     memcached_next_upstream_tries
     memcached_pass
     memcached_read_timeout
     memcached_send_timeout
     memcached_socket_keepalive
組み込み変数

ngx_http_memcached_moduleモジュールは、memcachedサーバーから応答を取得するために使用されます。キーは$memcached_key変数で設定されます。応答は、nginxの外部の手段によって、事前にmemcachedに配置される必要があります。

設定例

server {
    location / {
        set            $memcached_key "$uri?$args";
        memcached_pass host:11211;
        error_page     404 502 504 = @fallback;
    }

    location @fallback {
        proxy_pass     http://backend;
    }
}

ディレクティブ

構文 memcached_bind address [transparent] | off;
デフォルト
コンテキスト httpserverlocation

このディレクティブはバージョン0.8.22で登場しました。

memcachedサーバーへの発信接続を、オプションのポート(1.11.2)を持つ指定されたローカルIPアドレスから発信させます。パラメータ値には変数を含めることができます(1.3.12)。特別な値off(1.3.12)は、前の設定レベルから継承されたmemcached_bindディレクティブの効果をキャンセルし、システムがローカルIPアドレスとポートを自動的に割り当てることを可能にします。

transparentパラメータ(1.11.0)を使用すると、memcachedサーバーへの発信接続を、ローカルIPアドレスではなく、たとえばクライアントの実際のIPアドレスから発信させることができます。

memcached_bind $remote_addr transparent;

このパラメータを機能させるには、通常、nginxワーカープロセスをスーパーユーザー権限で実行する必要があります。Linuxでは、transparentパラメータが指定されている場合、ワーカープロセスがマスタープロセスからCAP_NET_RAWケーパビリティを継承するため、必須ではありません(1.13.8)。また、memcachedサーバーからのネットワークトラフィックをインターセプトするようにカーネルルーティングテーブルを設定する必要があります。

構文 memcached_buffer_size size;
デフォルト
memcached_buffer_size 4k|8k;
コンテキスト httpserverlocation

memcachedサーバーから受信した応答を読み取るために使用するバッファのsizeを設定します。応答は、受信するとすぐに、同期的にクライアントに渡されます。

構文 memcached_connect_timeout time;
デフォルト
memcached_connect_timeout 60s;
コンテキスト httpserverlocation

memcachedサーバーとの接続を確立するためのタイムアウトを定義します。このタイムアウトは通常75秒を超えることができないことに注意する必要があります。

構文 memcached_gzip_flag flag;
デフォルト
コンテキスト httpserverlocation

このディレクティブはバージョン1.3.6で登場しました。

memcachedサーバーの応答にflagが存在するかどうかのテストを有効にし、フラグが設定されている場合は、「Content-Encoding」応答ヘッダーフィールドを「gzip」に設定します。

構文 memcached_next_upstream error | timeout | invalid_response | not_found | off ...;
デフォルト
memcached_next_upstream error timeout;
コンテキスト httpserverlocation

リクエストを次のサーバーに渡す必要がある場合を指定します。

error
サーバーとの接続の確立、リクエストの送信、または応答ヘッダーの読み取り中にエラーが発生した場合。
timeout
サーバーとの接続の確立、リクエストの送信、または応答ヘッダーの読み取り中にタイムアウトが発生した場合。
invalid_response
サーバーが空または無効な応答を返した場合。
not_found
サーバーに応答が見つからなかった場合。
off
リクエストを次のサーバーに渡すことを無効にします。

クライアントに何も送信されていない場合にのみ、リクエストを次のサーバーに渡すことができることに注意する必要があります。つまり、応答の転送中にエラーまたはタイムアウトが発生した場合、これを修正することは不可能です。

このディレクティブは、サーバーとの通信の失敗した試行と見なされるものも定義します。errortimeoutinvalid_responseの場合は、ディレクティブで指定されていない場合でも、常に失敗した試行と見なされます。not_foundの場合は、失敗した試行とは見なされません。

次のサーバーへのリクエストの転送は、試行回数時間によって制限できます。

構文 memcached_next_upstream_timeout time;
デフォルト
memcached_next_upstream_timeout 0;
コンテキスト httpserverlocation

このディレクティブはバージョン1.7.5で登場しました。

リクエストを次のサーバーに渡すことができる時間を制限します。値0は、この制限をオフにします。

構文 memcached_next_upstream_tries number;
デフォルト
memcached_next_upstream_tries 0;
コンテキスト httpserverlocation

このディレクティブはバージョン1.7.5で登場しました。

リクエストを次のサーバーに渡すための試行可能な回数を制限します。値0は、この制限をオフにします。

構文 memcached_pass address;
デフォルト
コンテキスト locationlocation内のif

memcachedサーバーのアドレスを設定します。アドレスはドメイン名またはIPアドレス、およびポートとして指定できます。

memcached_pass localhost:11211;

または、UNIXドメインソケットパスとして指定できます。

memcached_pass unix:/tmp/memcached.socket;

ドメイン名が複数のアドレスに解決される場合、それらはすべてラウンドロビン方式で使用されます。さらに、アドレスはサーバーグループとして指定できます。

構文 memcached_read_timeout time;
デフォルト
memcached_read_timeout 60s;
コンテキスト httpserverlocation

memcachedサーバーからの応答を読み取るためのタイムアウトを定義します。タイムアウトは、応答全体の転送ではなく、2つの連続する読み取り操作の間でのみ設定されます。memcachedサーバーがこの時間内に何も送信しない場合、接続は閉じられます。

構文 memcached_send_timeout time;
デフォルト
memcached_send_timeout 60s;
コンテキスト httpserverlocation

memcachedサーバーへのリクエストの送信タイムアウトを設定します。タイムアウトは、リクエスト全体の送信ではなく、2つの連続する書き込み操作の間でのみ設定されます。memcachedサーバーがこの時間内に何も受信しない場合、接続は閉じられます。

構文 memcached_socket_keepalive on | off;
デフォルト
memcached_socket_keepalive off;
コンテキスト httpserverlocation

このディレクティブはバージョン1.15.6で登場しました。

memcachedサーバーへの発信接続の「TCP keepalive」動作を構成します。デフォルトでは、ソケットにはオペレーティングシステムの設定が有効になっています。ディレクティブが「on」の値に設定されている場合、SO_KEEPALIVEソケットオプションがソケットに対してオンになります。

組み込み変数

$memcached_key
memcachedサーバーから応答を取得するためのキーを定義します。