モジュール ngx_http_fastcgi_module
ngx_http_fastcgi_module モジュールは、FastCGIサーバーにリクエストを渡すことができます。
設定例
location / {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
}
ディレクティブ
| 構文 |
fastcgi_bind |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
このディレクティブはバージョン0.8.22で登場しました。
FastCGIサーバーへの発信接続を、指定されたローカルIPアドレスとオプションのポート(1.11.2)から発信するようにします。パラメータ値には変数を含めることができます(1.3.12)。特別な値off(1.3.12)は、前の設定レベルから継承されたfastcgi_bindディレクティブの効果をキャンセルし、システムがローカルIPアドレスとポートを自動的に割り当てることができます。
transparent パラメータ (1.11.0) は、FastCGI サーバーへの発信接続を、非ローカル IP アドレス、たとえばクライアントの実際の IP アドレスから発信することを可能にします。
fastcgi_bind $remote_addr transparent;
このパラメータを動作させるには、通常、nginx ワーカープロセスを スーパーユーザー 権限で実行する必要があります。Linux では、transparent パラメータが指定されている場合、ワーカープロセスはマスタープロセスから CAP_NET_RAW ケーパビリティを継承するため、必須ではありません (1.13.8)。また、FastCGIサーバーからのネットワークトラフィックをインターセプトするようにカーネルルーティングテーブルを設定する必要があります。
| 構文 |
fastcgi_buffer_size |
|---|---|
| デフォルト |
fastcgi_buffer_size 4k|8k; |
| コンテキスト |
http, server, location |
FastCGIサーバーから受信したレスポンスの最初の部分を読み取るために使用されるバッファのサイズを設定します。この部分には通常、小さなレスポンスヘッダーが含まれています。デフォルトでは、バッファサイズは1メモリページと同じです。これはプラットフォームに応じて4Kまたは8Kです。ただし、小さくすることもできます。
| 構文 |
fastcgi_buffering |
|---|---|
| デフォルト |
fastcgi_buffering on; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.5.6で登場しました。
FastCGIサーバーからのレスポンスのバッファリングを有効または無効にします。
バッファリングが有効になっている場合、nginxはFastCGIサーバーからできるだけ早くレスポンスを受信し、fastcgi_buffer_sizeおよびfastcgi_buffersディレクティブで設定されたバッファに保存します。レスポンス全体がメモリに収まらない場合は、その一部をディスク上の一時ファイルに保存できます。一時ファイルへの書き込みは、fastcgi_max_temp_file_sizeおよびfastcgi_temp_file_write_sizeディレクティブによって制御されます。
バッファリングが無効になっている場合、レスポンスは受信されるとすぐにクライアントに同期的に渡されます。nginxはFastCGIサーバーからレスポンス全体を読み取ろうとしません。nginxがサーバーから一度に受信できるデータの最大サイズは、fastcgi_buffer_sizeディレクティブによって設定されます。
バッファリングは、「X-Accel-Buffering」レスポンスヘッダーフィールドに「yes」または「no」を渡すことによっても有効または無効にすることができます。この機能は、fastcgi_ignore_headersディレクティブを使用して無効にすることができます。
| 構文 |
fastcgi_buffers |
|---|---|
| デフォルト |
fastcgi_buffers 8 4k|8k; |
| コンテキスト |
http, server, location |
単一接続の場合、FastCGIサーバーからレスポンスを読み取るために使用されるバッファの数とサイズを設定します。デフォルトでは、バッファサイズは1メモリページと同じです。これはプラットフォームに応じて4Kまたは8Kです。
| 構文 |
fastcgi_busy_buffers_size |
|---|---|
| デフォルト |
fastcgi_busy_buffers_size 8k|16k; |
| コンテキスト |
http, server, location |
FastCGIサーバーからのレスポンスのバッファリングが有効になっている場合、レスポンスがまだ完全に読み取られていない間に、レスポンスをクライアントに送信するのにビジー状態になる可能性のあるバッファの合計サイズを制限します。その間、残りのバッファを使用してレスポンスを読み取り、必要に応じてレスポンスの一部を一時ファイルにバッファリングできます。デフォルトでは、サイズはfastcgi_buffer_sizeおよびfastcgi_buffersディレクティブで設定された2つのバッファのサイズによって制限されます。
| 構文 |
fastcgi_cache |
|---|---|
| デフォルト |
fastcgi_cache off; |
| コンテキスト |
http, server, location |
キャッシュに使用される共有メモリゾーンを定義します。同じゾーンを複数の場所で使うことができます。パラメータ値には変数を含めることができます(1.7.9)。 off パラメータは、前の設定レベルから継承されたキャッシュを無効にします。
| 構文 |
fastcgi_cache_background_update |
|---|---|
| デフォルト |
fastcgi_cache_background_update off; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.11.10で登場しました。
期限切れのキャッシュアイテムを更新するためのバックグラウンドサブリクエストの開始を許可しますが、古いキャッシュされたレスポンスがクライアントに返されます。更新中は、古いキャッシュされたレスポンスの使用を許可する必要があることに注意してください。
| 構文 |
fastcgi_cache_bypass |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
レスポンスがキャッシュから取得されない条件を定義します。文字列パラメータの少なくとも1つの値が空ではなく、「0」と等しくない場合、レスポンスはキャッシュから取得されません。
fastcgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment; fastcgi_cache_bypass $http_pragma $http_authorization;
fastcgi_no_cacheディレクティブと一緒に使用できます。
| 構文 |
fastcgi_cache_key |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
キャッシュのキーを定義します。例:
fastcgi_cache_key localhost:9000$request_uri;
| 構文 |
fastcgi_cache_lock |
|---|---|
| デフォルト |
fastcgi_cache_lock off; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.1.12で登場しました。
有効にすると、一度に1つのリクエストのみが、fastcgi_cache_keyディレクティブに従って識別される新しいキャッシュ要素に、FastCGIサーバーにリクエストを渡すことによってデータを入力できます。同じキャッシュ要素の他のリクエストは、キャッシュにレスポンスが表示されるか、この要素のキャッシュロックが解放されるまで、fastcgi_cache_lock_timeoutディレクティブで設定された時間まで待機します。
| 構文 |
fastcgi_cache_lock_age |
|---|---|
| デフォルト |
fastcgi_cache_lock_age 5s; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.7.8で登場しました。
新しいキャッシュ要素を作成するためにFastCGIサーバーに渡された最後のリクエストが指定された時間内に完了しなかった場合、もう1つのリクエストがFastCGIサーバーに渡される可能性があります。
| 構文 |
fastcgi_cache_lock_timeout |
|---|---|
| デフォルト |
fastcgi_cache_lock_timeout 5s; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.1.12で登場しました。
fastcgi_cache_lockのタイムアウトを設定します。 時間が経過すると、リクエストはFastCGIサーバーに渡されますが、レスポンスはキャッシュされません。
1.7.8より前では、レスポンスはキャッシュされる可能性がありました。
| 構文 |
fastcgi_cache_max_range_offset |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.11.6で登場しました。
バイト範囲リクエストのオフセットをバイト単位で設定します。範囲がオフセットを超えている場合、範囲リクエストはFastCGIサーバーに渡され、レスポンスはキャッシュされません。
| 構文 |
fastcgi_cache_methods |
|---|---|
| デフォルト |
fastcgi_cache_methods GET HEAD; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン0.7.59で登場しました。
クライアントリクエストメソッドがこのディレクティブにリストされている場合、レスポンスはキャッシュされます。 「GET」および「HEAD」メソッドは常にリストに追加されますが、明示的に指定することをお勧めします。 fastcgi_no_cacheディレクティブも参照してください。
| 構文 |
fastcgi_cache_min_uses |
|---|---|
| デフォルト |
fastcgi_cache_min_uses 1; |
| コンテキスト |
http, server, location |
レスポンスがキャッシュされるまでのリクエストの数を設定します。
| 構文 |
fastcgi_cache_path |
|---|---|
| デフォルト | — |
| コンテキスト |
http |
キャッシュのパスとその他のパラメータを設定します。キャッシュデータはファイルに保存されます。キャッシュ内のキーとファイル名はどちらも、プロキシされたURLにMD5関数を適用した結果です。 levelsパラメータは、キャッシュの階層レベルを定義します。1から3まで、各レベルは値1または2を受け入れます。たとえば、次の設定では
fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
キャッシュ内のファイル名は次のようになります。
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
キャッシュされたレスポンスは最初に一時ファイルに書き込まれ、次にファイルの名前が変更されます。バージョン0.8.9以降、一時ファイルとキャッシュを異なるファイルシステムに配置できます。ただし、この場合、ファイルは安価な名前変更操作ではなく、2つのファイルシステムにコピーされることに注意してください。したがって、任意の場所について、キャッシュと一時ファイルを保持するディレクトリの両方を同じファイルシステムに配置することをお勧めします。一時ファイルのディレクトリは、use_temp_pathパラメータ(1.7.10)に基づいて設定されます。このパラメータが省略されているか、値onに設定されている場合、指定された場所のfastcgi_temp_pathディレクティブによって設定されたディレクトリが使用されます。値がoffに設定されている場合、一時ファイルはキャッシュディレクトリに直接配置されます。
さらに、すべてのアクティブなキーとデータに関する情報は、keys_zoneパラメータによって名前とサイズが設定された共有メモリゾーンに保存されます。1メガバイトのゾーンには約8,000個のキーを格納できます。
商用サブスクリプションの一部として、共有メモリゾーンには拡張キャッシュ情報も格納されるため、同じキー数に対してより大きなゾーンサイズを指定する必要があります。たとえば、1メガバイトのゾーンには約4,000個のキーを格納できます。
inactive パラメータで指定された時間内にアクセスされなかったキャッシュデータは、鮮度に関係なくキャッシュから削除されます。デフォルトでは、inactive は10分に設定されています。
特別な「キャッシュマネージャ」プロセスは、max_size パラメータで設定された最大キャッシュサイズと、min_free (1.19.1) パラメータで設定されたキャッシュを持つファイルシステムの最小空き容量を監視します。サイズを超過した場合、または空き容量が不足している場合は、最も最近使用されていないデータを削除します。データは、manager_files、manager_threshold、および manager_sleep パラメータ (1.11.5) で設定された反復で削除されます。1回の反復で削除されるアイテムは、manager_files 個以下です(デフォルトは100)。1回の反復の期間は、manager_threshold パラメータによって制限されます(デフォルトは200ミリ秒)。反復間では、manager_sleep パラメータで設定された一時停止が行われます(デフォルトは50ミリ秒)。
起動から1分後、特別な「キャッシュローダー」プロセスがアクティブになります。ファイルシステムに保存されている以前にキャッシュされたデータに関する情報をキャッシュゾーンにロードします。ロードも反復して行われます。1回の反復でロードされるアイテムは、loader_files 個以下です(デフォルトは100)。さらに、1回の反復の期間は、loader_threshold パラメータによって制限されます(デフォルトは200ミリ秒)。反復間では、loader_sleep パラメータで設定された一時停止が行われます(デフォルトは50ミリ秒)。
さらに、以下のパラメータは、商用サブスクリプションの一部として利用可能です。
-
purger=on|off - ワイルドカードキーに一致するキャッシュエントリをキャッシュパージャ(1.7.12)によってディスクから削除するかどうかを指示します。パラメータを
on(デフォルトはoff)に設定すると、すべてのキャッシュエントリを永続的に反復処理し、ワイルドカードキーに一致するエントリを削除する「キャッシュパージャ」プロセスがアクティブになります。 -
purger_files=number - 1回の反復でスキャンされるアイテムの数を設定します(1.7.12)。デフォルトでは、
purger_filesは10に設定されています。 -
purger_threshold=number - 1回の反復の期間を設定します(1.7.12)。デフォルトでは、
purger_thresholdは50ミリ秒に設定されています。 -
purger_sleep=number - 反復間の一時停止を設定します(1.7.12)。デフォルトでは、
purger_sleepは50ミリ秒に設定されています。
バージョン1.7.3、1.7.7、および1.11.10では、キャッシュヘッダーの形式が変更されました。以前にキャッシュされたレスポンスは、新しいnginxバージョンにアップグレードした後、無効と見なされます。
| 構文 |
fastcgi_cache_purge string ...; |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.5.7で登場しました。
リクエストがキャッシュパージリクエストと見なされる条件を定義します。文字列パラメータの少なくとも1つの値が空ではなく、「0」と等しくない場合、対応するキャッシュキーを持つキャッシュエントリが削除されます。操作の成功は、204(No Content)レスポンスを返すことで示されます。
パージリクエストのキャッシュキーがアスタリスク(「*」)で終わる場合、ワイルドカードキーに一致するすべてのキャッシュエントリがキャッシュから削除されます。ただし、これらのエントリは、非アクティブのために削除されるか、キャッシュパージャ(1.7.12)によって処理されるか、クライアントがアクセスを試みるまでディスクに残ります。
設定例
fastcgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m;
map $request_method $purge_method {
PURGE 1;
default 0;
}
server {
...
location / {
fastcgi_pass backend;
fastcgi_cache cache_zone;
fastcgi_cache_key $uri;
fastcgi_cache_purge $purge_method;
}
}
この機能は、商用サブスクリプションの一部として利用可能です。
| 構文 |
fastcgi_cache_revalidate |
|---|---|
| デフォルト |
fastcgi_cache_revalidate off; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.5.7で登場しました。
「If-Modified-Since」および「If-None-Match」ヘッダーフィールドを使用した条件付きリクエストによる、期限切れのキャッシュアイテムの再検証を有効にします。
| 構文 |
fastcgi_cache_use_stale |
|---|---|
| デフォルト |
fastcgi_cache_use_stale off; |
| コンテキスト |
http, server, location |
FastCGIサーバーとの通信中にエラーが発生した場合に、古いキャッシュレスポンスを使用できるケースを決定します。ディレクティブのパラメータは、fastcgi_next_upstream ディレクティブのパラメータと一致します。
error パラメータは、リクエストを処理するFastCGIサーバーを選択できない場合にも、古いキャッシュレスポンスの使用を許可します。
さらに、updating パラメータは、現在更新中の場合に、古いキャッシュレスポンスの使用を許可します。これにより、キャッシュデータを更新する際のFastCGIサーバーへのアクセス数を最小限に抑えることができます。
古いキャッシュレスポンスの使用は、レスポンスが古くなってから指定された秒数だけ、レスポンスヘッダーで直接有効にすることもできます(1.11.10)。これは、ディレクティブパラメータを使用するよりも優先度が低くなります。
- 「Cache-Control」ヘッダーフィールドの「stale-while-revalidate」拡張機能は、現在更新中の場合に、古いキャッシュレスポンスの使用を許可します。
- 「Cache-Control」ヘッダーフィールドの「stale-if-error」拡張機能は、エラーが発生した場合に、古いキャッシュレスポンスの使用を許可します。
新しいキャッシュ要素を作成する際のFastCGIサーバーへのアクセス数を最小限に抑えるために、fastcgi_cache_lock ディレクティブを使用できます。
| 構文 |
fastcgi_cache_valid [ |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
異なるレスポンスコードのキャッシュ時間を設定します。たとえば、次のディレクティブは
fastcgi_cache_valid 200 302 10m; fastcgi_cache_valid 404 1m;
コード200および302のレスポンスのキャッシュ時間を10分、コード404のレスポンスのキャッシュ時間を1分に設定します。
キャッシュtimeのみが指定されている場合
fastcgi_cache_valid 5m;
200、301、および302のレスポンスのみがキャッシュされます。
さらに、any パラメータを指定して、任意のレスポンスをキャッシュできます
fastcgi_cache_valid 200 302 10m; fastcgi_cache_valid 301 1h; fastcgi_cache_valid any 1m;
キャッシュのパラメータは、レスポンスヘッダーで直接設定することもできます。これは、ディレクティブを使用してキャッシュ時間を設定するよりも優先度が高くなります。
- 「X-Accel-Expires」ヘッダーフィールドは、レスポンスのキャッシュ時間を秒単位で設定します。ゼロ値は、レスポンスのキャッシュを無効にします。値が
@プレフィックスで始まる場合、レスポンスをキャッシュできるエポックからの絶対時間(秒単位)を設定します。 - ヘッダーに「X-Accel-Expires」フィールドが含まれていない場合、キャッシュのパラメータは「Expires」または「Cache-Control」ヘッダーフィールドで設定できます。
- ヘッダーに「Set-Cookie」フィールドが含まれている場合、そのようなレスポンスはキャッシュされません。
- ヘッダーに特別な値「
*」を持つ「Vary」フィールドが含まれている場合、そのようなレスポンスはキャッシュされません(1.7.7)。ヘッダーに別の値を持つ「Vary」フィールドが含まれている場合、そのようなレスポンスは対応するリクエストヘッダーフィールドを考慮してキャッシュされます(1.7.7)。
これらのレスポンスヘッダーフィールドの1つ以上の処理は、fastcgi_ignore_headers ディレクティブを使用して無効にすることができます。
| 構文 |
fastcgi_catch_stderr |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
FastCGIサーバーから受信したレスポンスのエラーストリームで検索する文字列を設定します。stringが見つかった場合、FastCGIサーバーが無効なレスポンスを返したと見なされます。これにより、nginxでアプリケーションエラーを処理できます。たとえば、
location /php/ {
fastcgi_pass backend:9000;
...
fastcgi_catch_stderr "PHP Fatal error";
fastcgi_next_upstream error timeout invalid_header;
}
| 構文 |
fastcgi_connect_timeout |
|---|---|
| デフォルト |
fastcgi_connect_timeout 60s; |
| コンテキスト |
http, server, location |
FastCGIサーバーとの接続を確立するためのタイムアウトを定義します。通常、このタイムアウトは75秒を超えることはできません。
| 構文 |
fastcgi_force_ranges |
|---|---|
| デフォルト |
fastcgi_force_ranges off; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.7.7で登場しました。
これらのレスポンスの「Accept-Ranges」フィールドに関係なく、FastCGIサーバーからのキャッシュされたレスポンスとキャッシュされていないレスポンスの両方でバイトレンジサポートを有効にします。
| 構文 |
fastcgi_hide_header |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
デフォルトでは、nginxはFastCGIサーバーのレスポンスからクライアントに「Status」および「X-Accel-…」ヘッダーフィールドを渡しません。fastcgi_hide_header ディレクティブは、渡されない追加のフィールドを設定します。逆に、フィールドの受け渡しを許可する必要がある場合は、fastcgi_pass_header ディレクティブを使用できます。
| 構文 |
fastcgi_ignore_client_abort |
|---|---|
| デフォルト |
fastcgi_ignore_client_abort off; |
| コンテキスト |
http, server, location |
クライアントがレスポンスを待たずに接続を閉じるときに、FastCGIサーバーとの接続を閉じるかどうかを決定します。
| 構文 |
fastcgi_ignore_headers |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
FastCGIサーバーからの特定のレスポンスヘッダーフィールドの処理を無効にします。次のフィールドは無視できます。「X-Accel-Redirect」、「X-Accel-Expires」、「X-Accel-Limit-Rate」(1.1.6)、「X-Accel-Buffering」(1.1.6)、「X-Accel-Charset」(1.1.6)、「Expires」、「Cache-Control」、「Set-Cookie」(0.8.44)、および「Vary」(1.7.7)。
無効にしない場合、これらのヘッダーフィールドの処理には次の効果があります
- 「X-Accel-Expires」、「Expires」、「Cache-Control」、「Set-Cookie」、および「Vary」は、レスポンスキャッシングのパラメータを設定します。
- 「X-Accel-Redirect」は、指定されたURIへの内部リダイレクトを実行します。
- 「X-Accel-Limit-Rate」は、クライアントへのレスポンスの送信のレート制限を設定します。
- 「X-Accel-Buffering」は、レスポンスのバッファリングを有効または無効にします。
- 「X-Accel-Charset」は、レスポンスの目的の文字セットを設定します。
| 構文 |
fastcgi_index |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
$fastcgi_script_name 変数の値で、スラッシュで終わるURIの後に追加されるファイル名を設定します。たとえば、これらの設定では
fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
「/page.php」リクエストでは、SCRIPT_FILENAME パラメータは「/home/www/scripts/php/page.php」になり、「/」リクエストでは「/home/www/scripts/php/index.php」になります。
| 構文 |
fastcgi_intercept_errors |
|---|---|
| デフォルト |
fastcgi_intercept_errors off; |
| コンテキスト |
http, server, location |
300以上のコードを持つFastCGIサーバーレスポンスをクライアントに渡すか、インターセプトしてerror_page ディレクティブで処理するためにnginxにリダイレクトするかを決定します。
| 構文 |
fastcgi_keep_conn |
|---|---|
| デフォルト |
fastcgi_keep_conn off; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.1.4で登場しました。
デフォルトでは、FastCGIサーバーはレスポンスを送信した直後に接続を閉じます。ただし、このディレクティブが値 on に設定されている場合、nginxはFastCGIサーバーに接続を開いたままにするように指示します。これは、特に、FastCGIサーバーへのキープアライブ接続が機能するために必要です。
| 構文 |
fastcgi_limit_rate |
|---|---|
| デフォルト |
fastcgi_limit_rate 0; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.7.7で登場しました。
FastCGIサーバーからのレスポンスの読み取り速度を制限します。rate は1秒あたりのバイト数で指定されます。ゼロ値はレート制限を無効にします。制限はリクエストごとに設定されるため、nginxがFastCFIサーバーに同時に2つの接続を開くと、全体的なレートは指定された制限の2倍になります。この制限は、FastCGIサーバーからのレスポンスのバッファリングが有効になっている場合にのみ機能します. パラメータ値には変数を含めることができます (1.27.0)。
| 構文 |
fastcgi_max_temp_file_size |
|---|---|
| デフォルト |
fastcgi_max_temp_file_size 1024m; |
| コンテキスト |
http, server, location |
FastCGIサーバーからのレスポンスのバッファリングが有効になっている場合、レスポンス全体がfastcgi_buffer_sizeおよびfastcgi_buffersディレクティブで設定されたバッファに収まらない場合、レスポンスの一部は一時ファイルに保存されます。このディレクティブは、一時ファイルの最大サイズを設定します。一時ファイルに一度に書き込まれるデータのサイズは、fastcgi_temp_file_write_sizeディレクティブによって設定されます。
値をゼロにすると、一時ファイルへのレスポンスのバッファリングが無効になります。
この制限は、キャッシュされるか、ディスクに保存されるレスポンスには適用されません。
| 構文 |
fastcgi_next_upstream |
|---|---|
| デフォルト |
fastcgi_next_upstream error timeout; |
| コンテキスト |
http, server, location |
リクエストを次のサーバーに渡す必要がある場合を指定します
error- サーバーとの接続の確立、リクエストの送信、またはレスポンスヘッダーの読み取り中にエラーが発生しました。
timeout- サーバーとの接続の確立、リクエストの送信、またはレスポンスヘッダーの読み取り中にタイムアウトが発生しました。
invalid_header- サーバーが空または無効なレスポンスを返しました。
http_500- サーバーがコード500でレスポンスを返しました。
http_503- サーバーがコード503でレスポンスを返しました。
http_403- サーバーがコード403でレスポンスを返しました。
http_404- サーバーがコード404でレスポンスを返しました。
http_429- サーバーがコード429でレスポンスを返しました(1.11.13)。
non_idempotent- 通常、非冪等メソッド(
POST、LOCK、PATCH)のリクエストは、アップストリームサーバーにリクエストが送信された場合、次のサーバーに渡されません(1.9.13)。 このオプションを有効にすると、そのようなリクエストを明示的に再試行できます。 off- リクエストを次のサーバーに渡すことを無効にします。
リクエストを次のサーバーに渡すことができるのは、クライアントに何も送信されていない場合のみであることに注意してください。 つまり、レスポンスの転送中にエラーまたはタイムアウトが発生した場合、これを修正することはできません。
このディレクティブは、サーバーとの通信の失敗した試行と見なされるものも定義します。 error、timeout、invalid_header の場合は、ディレクティブで指定されていない場合でも、常に失敗した試行と見なされます。 http_500、http_503、http_429 の場合は、ディレクティブで指定されている場合にのみ、失敗した試行と見なされます。 http_403 および http_404 の場合は、失敗した試行とは見なされません。
リクエストを次のサーバーに渡すことは、試行回数と時間によって制限できます。
| 構文 |
fastcgi_next_upstream_timeout |
|---|---|
| デフォルト |
fastcgi_next_upstream_timeout 0; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.7.5で登場しました。
リクエストを次のサーバーに渡すことができる時間を制限します。 0 の値は、この制限を無効にします。
| 構文 |
fastcgi_next_upstream_tries |
|---|---|
| デフォルト |
fastcgi_next_upstream_tries 0; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.7.5で登場しました。
リクエストを次のサーバーに渡すための試行回数を制限します。 0 の値は、この制限を無効にします。
| 構文 |
fastcgi_no_cache |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
レスポンスがキャッシュに保存されない条件を定義します。 文字列パラメータの少なくとも1つの値が空ではなく、「0」と等しくない場合、レスポンスは保存されません
fastcgi_no_cache $cookie_nocache $arg_nocache$arg_comment; fastcgi_no_cache $http_pragma $http_authorization;
fastcgi_cache_bypassディレクティブと一緒に使用できます。
| 構文 |
fastcgi_param |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
FastCGIサーバーに渡す必要があるパラメータを設定します。 値には、テキスト、変数、およびそれらの組み合わせを含めることができます。 これらのディレクティブは、現在のレベルで定義されているfastcgi_paramディレクティブがない場合にのみ、前の構成レベルから継承されます。
次の例は、PHPに必要な最小限の設定を示しています
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string;
SCRIPT_FILENAMEパラメータはPHPでスクリプト名を決定するために使用され、QUERY_STRINGパラメータはリクエストパラメータを渡すために使用されます。
POSTリクエストを処理するスクリプトの場合、次の3つのパラメータも必要です
fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length;
PHPが--enable-force-cgi-redirect設定パラメータでビルドされた場合、REDIRECT_STATUSパラメータも値「200」で渡す必要があります
fastcgi_param REDIRECT_STATUS 200;
ディレクティブがif_not_empty(1.1.11)で指定されている場合、そのようなパラメータは、その値が空でない場合にのみサーバーに渡されます
fastcgi_param HTTPS $https if_not_empty;
| 構文 |
fastcgi_pass |
|---|---|
| デフォルト | — |
| コンテキスト |
location, if in location |
FastCGIサーバーのアドレスを設定します。 アドレスは、ドメイン名またはIPアドレス、およびポートとして指定できます
fastcgi_pass localhost:9000;
または、UNIXドメインソケットパスとして指定できます
fastcgi_pass unix:/tmp/fastcgi.socket;
ドメイン名が複数のアドレスに解決される場合、それらはすべてラウンドロビン方式で使用されます。 さらに、アドレスはサーバーグループとして指定できます。
パラメータ値には変数を含めることができます。 この場合、アドレスがドメイン名として指定されている場合、名前は記述されているサーバーグループの中から検索され、見つからない場合はリゾルバを使用して決定されます。
| 構文 |
fastcgi_pass_header |
|---|---|
| デフォルト | — |
| コンテキスト |
http, server, location |
otherwise disabledヘッダーフィールドをFastCGIサーバーからクライアントに渡すことを許可します。
| 構文 |
fastcgi_pass_request_body |
|---|---|
| デフォルト |
fastcgi_pass_request_body on; |
| コンテキスト |
http, server, location |
元のリクエスト本文がFastCGIサーバーに渡されるかどうかを示します。 fastcgi_pass_request_headersディレクティブも参照してください。
| 構文 |
fastcgi_pass_request_headers |
|---|---|
| デフォルト |
fastcgi_pass_request_headers on; |
| コンテキスト |
http, server, location |
元のリクエストのヘッダーフィールドがFastCGIサーバーに渡されるかどうかを示します。 fastcgi_pass_request_bodyディレクティブも参照してください。
| 構文 |
fastcgi_read_timeout |
|---|---|
| デフォルト |
fastcgi_read_timeout 60s; |
| コンテキスト |
http, server, location |
FastCGIサーバーからのレスポンスを読み取るためのタイムアウトを定義します。 タイムアウトは、レスポンス全体の送信ではなく、2つの連続した読み取り操作の間にのみ設定されます。 FastCGIサーバーがこの時間内に何も送信しない場合、接続は閉じられます。
| 構文 |
fastcgi_request_buffering |
|---|---|
| デフォルト |
fastcgi_request_buffering on; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.7.11で登場しました。
クライアントリクエスト本文のバッファリングを有効または無効にします。
バッファリングが有効になっている場合、リクエスト全体がFastCGIサーバーにリクエストを送信する前にクライアントから読み取られます。
バッファリングが無効になっている場合、リクエスト本文は受信されるとすぐにFastCGIサーバーに送信されます。 この場合、nginxがすでにリクエスト本文の送信を開始している場合、リクエストを次のサーバーに渡すことはできません。
| 構文 |
fastcgi_send_lowat |
|---|---|
| デフォルト |
fastcgi_send_lowat 0; |
| コンテキスト |
http, server, location |
ディレクティブがゼロ以外の値に設定されている場合、nginxは、kqueueメソッドのNOTE_LOWATフラグ、または指定されたサイズのSO_SNDLOWATソケットオプションを使用して、FastCGIサーバーへの発信接続での送信操作の数を最小限に抑えようとします。
このディレクティブは、Linux、Solaris、およびWindowsでは無視されます。
| 構文 |
fastcgi_send_timeout |
|---|---|
| デフォルト |
fastcgi_send_timeout 60s; |
| コンテキスト |
http, server, location |
FastCGIサーバーにリクエストを送信するためのタイムアウトを設定します。 タイムアウトは、リクエスト全体の送信ではなく、2つの連続した書き込み操作の間にのみ設定されます。 FastCGIサーバーがこの時間内に何も受信しない場合、接続は閉じられます。
| 構文 |
fastcgi_socket_keepalive |
|---|---|
| デフォルト |
fastcgi_socket_keepalive off; |
| コンテキスト |
http, server, location |
このディレクティブはバージョン1.15.6で登場しました。
FastCGIサーバーへの発信接続の「TCPキープアライブ」動作を構成します。 デフォルトでは、オペレーティングシステムの設定がソケットに有効です。 ディレクティブが値「on」に設定されている場合、SO_KEEPALIVEソケットオプションがソケットに対してオンになります。
| 構文 |
fastcgi_split_path_info |
|---|---|
| デフォルト | — |
| コンテキスト |
location |
$fastcgi_path_info変数の値を取得する正規表現を定義します。 正規表現には2つのキャプチャが必要です。1つ目は$fastcgi_script_name変数の値になり、2つ目は$fastcgi_path_info変数の値になります。 たとえば、これらの設定を使用すると
location ~ ^(.+\.php)(.*)$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
「/show.php/article/0001」リクエストの場合、SCRIPT_FILENAMEパラメータは「/path/to/php/show.php」に等しくなり、PATH_INFOパラメータは「/article/0001」に等しくなります。
| 構文 |
fastcgi_store |
|---|---|
| デフォルト |
fastcgi_store off; |
| コンテキスト |
http, server, location |
ファイルのディスクへの保存を有効にします。 onパラメータは、aliasまたはrootディレクティブに対応するパスを持つファイルを保存します。 offパラメータは、ファイルの保存を無効にします。 さらに、ファイル名は、変数を含む文字列を使用して明示的に設定できます
fastcgi_store /data/www$original_uri;
ファイルの変更時刻は、受信した「Last-Modified」レスポンスヘッダーフィールドに従って設定されます。 レスポンスは最初に一時ファイルに書き込まれ、その後、ファイルの名前が変更されます。 バージョン0.8.9以降、一時ファイルと永続ストアを異なるファイルシステムに配置できます。 ただし、この場合、ファイルは安価な名前変更操作ではなく、2つのファイルシステムにコピーされることに注意してください。 したがって、特定の場所について、保存されたファイルと、fastcgi_temp_pathディレクティブによって設定された一時ファイルを保持するディレクトリの両方を同じファイルシステムに配置することをお勧めします。
このディレクティブを使用して、静的で変更不可能なファイルのローカルコピーを作成できます。例:
location /images/ {
root /data/www;
error_page 404 = /fetch$uri;
}
location /fetch/ {
internal;
fastcgi_pass backend:9000;
...
fastcgi_store on;
fastcgi_store_access user:rw group:rw all:r;
fastcgi_temp_path /data/temp;
alias /data/www/;
}
| 構文 |
fastcgi_store_access |
|---|---|
| デフォルト |
fastcgi_store_access user:rw; |
| コンテキスト |
http, server, location |
新しく作成されたファイルとディレクトリのアクセス許可を設定します。例:
fastcgi_store_access user:rw group:rw all:r;
groupまたはallアクセス許可が指定されている場合、userアクセス許可は省略できます
fastcgi_store_access group:rw all:r;
| 構文 |
fastcgi_temp_file_write_size |
|---|---|
| デフォルト |
fastcgi_temp_file_write_size 8k|16k; |
| コンテキスト |
http, server, location |
FastCGIサーバーから一時ファイルへのレスポンスのバッファリングが有効になっている場合、一時ファイルに一度に書き込まれるデータのサイズを制限します。 デフォルトでは、サイズは、fastcgi_buffer_sizeおよびfastcgi_buffersディレクティブによって設定された2つのバッファによって制限されます。 一時ファイルの最大サイズは、fastcgi_max_temp_file_sizeディレクティブによって設定されます。
| 構文 |
fastcgi_temp_path |
|---|---|
| デフォルト |
fastcgi_temp_path fastcgi_temp; |
| コンテキスト |
http, server, location |
FastCGIサーバーから受信したデータを含む一時ファイルを保存するためのディレクトリを定義します。 指定されたディレクトリの下に、最大3レベルのサブディレクトリ階層を使用できます。 たとえば、次の構成では
fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2;
一時ファイルは次のようになります
/spool/nginx/fastcgi_temp/7/45/00000123457
fastcgi_cache_pathディレクティブのuse_temp_pathパラメータも参照してください。
FastCGIサーバーに渡されるパラメータ
HTTPリクエストヘッダーフィールドは、パラメータとしてFastCGIサーバーに渡されます。FastCGIサーバーとして実行されているアプリケーションおよびスクリプトでは、これらのパラメータは通常、環境変数として利用できます。たとえば、「User-Agent」ヘッダーフィールドは、HTTP_USER_AGENTパラメータとして渡されます。HTTPリクエストヘッダーフィールドに加えて、fastcgi_paramディレクティブを使用して任意のパラメータを渡すことができます。
組み込み変数
ngx_http_fastcgi_moduleモジュールは、fastcgi_paramディレクティブを使用してパラメータを設定するために使用できる埋め込み変数をサポートしています。
$fastcgi_script_name- リクエストURI、またはURIがスラッシュで終わる場合は、fastcgi_indexディレクティブによって設定されたインデックスファイル名が追加されたリクエストURIです。この変数は、PHPでスクリプト名を決定する
SCRIPT_FILENAMEおよびPATH_TRANSLATEDパラメータを設定するために使用できます。たとえば、以下のディレクティブを使用した「/info/」リクエストの場合fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
SCRIPT_FILENAMEパラメータは「/home/www/scripts/php/info/index.php」になります。fastcgi_split_path_infoディレクティブを使用する場合、
$fastcgi_script_name変数は、ディレクティブによって設定された最初のキャプチャの値と等しくなります。 $fastcgi_path_info- fastcgi_split_path_infoディレクティブによって設定された2番目のキャプチャの値です。この変数は、
PATH_INFOパラメータを設定するために使用できます。