モジュール ngx_http_memcached_module
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 |
|---|---|
| デフォルト | — |
| コンテキスト |
http、server、location |
このディレクティブはバージョン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 |
|---|---|
| デフォルト |
memcached_buffer_size 4k|8k; |
| コンテキスト |
http、server、location |
memcachedサーバーから受信した応答を読み取るために使用するバッファのsizeを設定します。応答は、受信するとすぐに、同期的にクライアントに渡されます。
| 構文 |
memcached_connect_timeout |
|---|---|
| デフォルト |
memcached_connect_timeout 60s; |
| コンテキスト |
http、server、location |
memcachedサーバーとの接続を確立するためのタイムアウトを定義します。このタイムアウトは通常75秒を超えることができないことに注意する必要があります。
| 構文 |
memcached_gzip_flag |
|---|---|
| デフォルト | — |
| コンテキスト |
http、server、location |
このディレクティブはバージョン1.3.6で登場しました。
memcachedサーバーの応答にflagが存在するかどうかのテストを有効にし、フラグが設定されている場合は、「Content-Encoding」応答ヘッダーフィールドを「gzip」に設定します。
| 構文 |
memcached_next_upstream |
|---|---|
| デフォルト |
memcached_next_upstream error timeout; |
| コンテキスト |
http、server、location |
リクエストを次のサーバーに渡す必要がある場合を指定します。
error- サーバーとの接続の確立、リクエストの送信、または応答ヘッダーの読み取り中にエラーが発生した場合。
timeout- サーバーとの接続の確立、リクエストの送信、または応答ヘッダーの読み取り中にタイムアウトが発生した場合。
invalid_response- サーバーが空または無効な応答を返した場合。
not_found- サーバーに応答が見つからなかった場合。
off- リクエストを次のサーバーに渡すことを無効にします。
クライアントに何も送信されていない場合にのみ、リクエストを次のサーバーに渡すことができることに注意する必要があります。つまり、応答の転送中にエラーまたはタイムアウトが発生した場合、これを修正することは不可能です。
このディレクティブは、サーバーとの通信の失敗した試行と見なされるものも定義します。error、timeout、invalid_responseの場合は、ディレクティブで指定されていない場合でも、常に失敗した試行と見なされます。not_foundの場合は、失敗した試行とは見なされません。
次のサーバーへのリクエストの転送は、試行回数と時間によって制限できます。
| 構文 |
memcached_next_upstream_timeout |
|---|---|
| デフォルト |
memcached_next_upstream_timeout 0; |
| コンテキスト |
http、server、location |
このディレクティブはバージョン1.7.5で登場しました。
リクエストを次のサーバーに渡すことができる時間を制限します。値0は、この制限をオフにします。
| 構文 |
memcached_next_upstream_tries |
|---|---|
| デフォルト |
memcached_next_upstream_tries 0; |
| コンテキスト |
http、server、location |
このディレクティブはバージョン1.7.5で登場しました。
リクエストを次のサーバーに渡すための試行可能な回数を制限します。値0は、この制限をオフにします。
| 構文 |
memcached_pass |
|---|---|
| デフォルト | — |
| コンテキスト |
location、location内のif |
memcachedサーバーのアドレスを設定します。アドレスはドメイン名またはIPアドレス、およびポートとして指定できます。
memcached_pass localhost:11211;
または、UNIXドメインソケットパスとして指定できます。
memcached_pass unix:/tmp/memcached.socket;
ドメイン名が複数のアドレスに解決される場合、それらはすべてラウンドロビン方式で使用されます。さらに、アドレスはサーバーグループとして指定できます。
| 構文 |
memcached_read_timeout |
|---|---|
| デフォルト |
memcached_read_timeout 60s; |
| コンテキスト |
http、server、location |
memcachedサーバーからの応答を読み取るためのタイムアウトを定義します。タイムアウトは、応答全体の転送ではなく、2つの連続する読み取り操作の間でのみ設定されます。memcachedサーバーがこの時間内に何も送信しない場合、接続は閉じられます。
| 構文 |
memcached_send_timeout |
|---|---|
| デフォルト |
memcached_send_timeout 60s; |
| コンテキスト |
http、server、location |
memcachedサーバーへのリクエストの送信タイムアウトを設定します。タイムアウトは、リクエスト全体の送信ではなく、2つの連続する書き込み操作の間でのみ設定されます。memcachedサーバーがこの時間内に何も受信しない場合、接続は閉じられます。
| 構文 |
memcached_socket_keepalive |
|---|---|
| デフォルト |
memcached_socket_keepalive off; |
| コンテキスト |
http、server、location |
このディレクティブはバージョン1.15.6で登場しました。
memcachedサーバーへの発信接続の「TCP keepalive」動作を構成します。デフォルトでは、ソケットにはオペレーティングシステムの設定が有効になっています。ディレクティブが「on」の値に設定されている場合、SO_KEEPALIVEソケットオプションがソケットに対してオンになります。
組み込み変数
$memcached_key- memcachedサーバーから応答を取得するためのキーを定義します。