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サーバへ向かって出て行く接続が、指定したローカルのIPアドレスとオプションのポートから始まるようにします (1.11.2)。パラメータの値には変数を含めることができます (1.3.12)。特別な値off
(1.3.12) は上の設定レベルのmemcached_bind
ディレクティブの継承の影響をキャンセルします。これによりシステムはローカルIPアドレスとポートに自動割り当てすることができます。
transparent
パラメータ (1.11.0) はmemcachedサーバへ向かって出ていく接続がローカルIPアドレスでは無いようにします。例えば、クライアントの実際のIPアドレス:
memcached_bind $remote_addr transparent;
このパラメータが動作するためには、通常nginxのワーカープロセスを superuser 権限を使って実行する必要があります。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 |
どの場合にリクエストが次のサーバに渡されるべきかを指定します:
エラー
- サーバへの接続の確立時、あるいはサーバにリクエストを渡す時、あるいは応答ヘッダーを読み込む時にエラーが起きた場合;
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 , if in location |
memcachedサーバのアドレスを設定します。アドレスはドメイン名またはIPアドレスと、ポートで指定することができます。
memcached_pass localhost:11211;
あるいは、UNIXドメインソケットパス:
memcached_pass unix:/tmp/memcached.socket;
ドメイン名が幾つかのアドレスに解決される場合は、ラウンドロビンの形式でそれら全てが使われるでしょう。更に、server groupとしてアドレスを指定することができます。
構文: |
memcached_read_timeout |
---|---|
デフォルト: |
memcached_read_timeout 60s; |
コンテキスト: |
http , server , location |
memcachedサーバからの応答の読み込みのタイムアウトを設定します。タイムアウトは二つの連続する読み込み操作の間に設定され、応答全体の転送のためのものではありません。memcachedサーバがこの時間内に何も転送しなかった場合、接続は閉じられます。
構文: |
memcached_send_timeout |
---|---|
デフォルト: |
memcached_send_timeout 60s; |
コンテキスト: |
http , server , location |
memcachedサーバへのリクエストの転送のタイムアウトを設定します。タイムアウトは二つの連続する書き込み操作の間に設定され、リクエスト全体の転送のためのものではありません。memcachedサーバがこの時間内に何も受け取らなかった場合、接続が閉じられます。
構文: |
memcached_socket_keepalive |
---|---|
デフォルト: |
memcached_socket_keepalive off; |
コンテキスト: |
http , server , location |
このディレクティブはバージョン1.15.6から導入されました。
Configures the “TCP keepalive” behavior for outgoing connections to a memcached server. デフォルトでは、オペレーティングシステムの設定はソケットに対して有効です。ディレクティブが値“on
”に設定されている場合、ソケットのSO_KEEPALIVE
ソケットオプションがオンになります。
埋め込み変数
$memcached_key
- memcachedサーバから応答を受け取るためのキーを定義します。