モジュール 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サーバーから応答を取得するためのキーを定義します。