モジュールngx_http_fastcgi_module

構成例
指令
     fastcgi_bind
     fastcgi_buffer_size
     fastcgi_buffering
     fastcgi_buffers
     fastcgi_busy_buffers_size
     fastcgi_cache
     fastcgi_cache_background_update
     fastcgi_cache_bypass
     fastcgi_cache_key
     fastcgi_cache_lock
     fastcgi_cache_lock_age
     fastcgi_cache_lock_timeout
     fastcgi_cache_max_range_offset
     fastcgi_cache_methods
     fastcgi_cache_min_uses
     fastcgi_cache_path
     fastcgi_cache_purge
     fastcgi_cache_revalidate
     fastcgi_cache_use_stale
     fastcgi_cache_valid
     fastcgi_catch_stderr
     fastcgi_connect_timeout
     fastcgi_force_ranges
     fastcgi_hide_header
     fastcgi_ignore_client_abort
     fastcgi_ignore_headers
     fastcgi_index
     fastcgi_intercept_errors
     fastcgi_keep_conn
     fastcgi_limit_rate
     fastcgi_max_temp_file_size
     fastcgi_next_upstream
     fastcgi_next_upstream_timeout
     fastcgi_next_upstream_tries
     fastcgi_no_cache
     fastcgi_param
     fastcgi_pass
     fastcgi_pass_header
     fastcgi_pass_request_body
     fastcgi_pass_request_headers
     fastcgi_read_timeout
     fastcgi_request_buffering
     fastcgi_send_lowat
     fastcgi_send_timeout
     fastcgi_socket_keepalive
     fastcgi_split_path_info
     fastcgi_store
     fastcgi_store_access
     fastcgi_temp_file_write_size
     fastcgi_temp_path
FastCGIサーバーに渡されるパラメーター
埋め込み変数

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
address
[transparent] |
off;
デフォルト:
コンテクスト: http, server, location

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

FastCGIサーバーへの発信接続を、オプションのポート(1.11.2)を使用して指定されたローカルIPアドレスから発信します。 パラメータ値には変数(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パラメーターが指定されているかのように、必須ではありません(1.13.8)。ワーカープロセスは、マスタープロセスからCAP_NET_RAW機能を継承します。 FastCGIサーバーからのネットワークトラフィックを傍受するようにカーネルルーティングテーブルを構成することも必要です。

構文: fastcgi_buffer_size size;
デフォルト:
fastcgi_buffer_size 4k|8k;
コンテクスト: http, server, location

FastCGIサーバーから受信した応答の最初の部分を読み取るために使用されるバッファーのsizeを設定します。 この部分には通常、小さな応答ヘッダーが含まれています。 デフォルトでは、バッファサイズは1メモリページに等しくなります。 これは、プラットフォームに応じて、4Kまたは8Kのいずれかになります。 ただし、小さくすることはできます。

構文: fastcgi_buffering on | off;
デフォルト:
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 number size;
デフォルト:
fastcgi_buffers 8 4k|8k;
コンテクスト: http, server, location

単一接続の場合、FastCGIサーバーからの応答の読み取りに使用されるバッファーのnumberおよびsizeを設定します。 デフォルトでは、バッファサイズは1メモリページに等しくなります。 これは、プラットフォームに応じて、4Kまたは8Kのいずれかになります。

構文: fastcgi_busy_buffers_size size;
デフォルト:
fastcgi_busy_buffers_size 8k|16k;
コンテクスト: http, server, location

FastCGIサーバーからの応答のbufferingが有効になっている場合、応答がまだ完全に読み取られていないときにクライアントに応答を送信するのにビジーになる可能性のあるバッファーの合計sizeを制限します。 その間、残りのバッファは応答の読み取りに使用でき、必要に応じて、応答の一部を一時ファイルにバッファリングできます。 デフォルトでは、sizeは、fastcgi_buffer_sizeおよびfastcgi_buffersディレクティブによって設定された2つのバッファーのサイズによって制限されます。

構文: fastcgi_cache zone | off;
デフォルト:
fastcgi_cache off;
コンテクスト: http, server, location

キャッシュに使用される共有メモリゾーンを定義します。 同じゾーンを複数の場所で使用できます。 パラメータ値には変数(1.7.9)を含めることができます。 offパラメーターは、前の構成レベルから継承されたキャッシュを無効にします。

構文: fastcgi_cache_background_update on | off;
デフォルト:
fastcgi_cache_background_update off;
コンテクスト: http, server, location

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

バックグラウンドサブリクエストを開始して期限切れのキャッシュアイテムを更新できるようにしますが、古いキャッシュされた応答はクライアントに返されます。 更新中は、古いキャッシュされた応答の使用を許可する必要があることに注意してください。

構文: fastcgi_cache_bypass string ...;
デフォルト:
コンテクスト: 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 string;
デフォルト:
コンテクスト: http, server, location

たとえば、キャッシュ用のキーを定義します

fastcgi_cache_key localhost:9000$request_uri;

構文: fastcgi_cache_lock on | off;
デフォルト:
fastcgi_cache_lock off;
コンテクスト: http, server, location

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

有効にすると、FastCGIサーバーにリクエストを渡すことにより、fastcgi_cache_keyディレクティブに従って識別された新しいキャッシュ要素に一度に1つのリクエストのみを取り込むことができます。 同じキャッシュ要素の他の要求は、 fastcgi_cache_lock_timeout ディレクティブによって設定された時間まで、応答がキャッシュに表示されるのを待つか、この要素のキャッシュロックが解放されるのを待ちます。

構文: fastcgi_cache_lock_age time;
デフォルト:
fastcgi_cache_lock_age 5s;
コンテクスト: http, server, location

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

新しいキャッシュ要素を取り込むためにFastCGIサーバーに渡された最後の要求が、指定されたtimeに対して完了していない場合、もう1つの要求がFastCGIサーバーに渡される可能性があります。

構文: fastcgi_cache_lock_timeout time;
デフォルト:
fastcgi_cache_lock_timeout 5s;
コンテクスト: http, server, location

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

fastcgi_cache_lockのタイムアウトを設定します。 timeの有効期限が切れると、要求はFastCGIサーバーに渡されますが、応答はキャッシュされません。

1.7.8より前では、応答はキャッシュされていました。

構文: fastcgi_cache_max_range_offset number;
デフォルト:
コンテクスト: http, server, location

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

バイト範囲要求のオフセットをバイト単位で設定します。 範囲がオフセットを超えている場合、範囲要求はFastCGIサーバーに渡され、応答はキャッシュされません。

構文: fastcgi_cache_methods
GET |
HEAD |
POST
...;
デフォルト:
fastcgi_cache_methods GET HEAD;
コンテクスト: http, server, location

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

クライアント要求メソッドがこのディレクティブにリストされている場合、応答はキャッシュされます。 「GET」および「HEAD」メソッドは常にリストに追加されますが、明示的に指定することをお勧めします。 fastcgi_no_cacheディレクティブも参照してください。

構文: fastcgi_cache_min_uses number;
デフォルト:
fastcgi_cache_min_uses 1;
コンテクスト: http, server, location

リクエストのnumberを設定します。その後、レスポンスがキャッシュされます。

構文: fastcgi_cache_path
path
[levels=levels]
[use_temp_path=on|off]
keys_zone=name:size
[inactive=time]
[max_size=size]
[min_free=size]
[manager_files=number]
[manager_sleep=time]
[manager_threshold=time]
[loader_files=number]
[loader_sleep=time]
[loader_threshold=time]
[purger=on|off]
[purger_files=number]
[purger_sleep=time]
[purger_threshold=time];
デフォルト:
コンテクスト: 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に設定されている場合、一時ファイルはキャッシュディレクトリに直接配置されます。

さらに、すべてのアクティブなキーとデータに関する情報は共有メモリゾーンに保存され、そのnamesizekeys_zoneパラメーターによって構成されます。 1メガバイトのゾーンには約8000個のキーを格納できます。

商用サブスクリプションの一部として、共有メモリゾーンは拡張キャッシュ情報も格納するため、同じ数のキーに対してより大きなゾーンサイズを指定する必要があります。 たとえば、1メガバイトのゾーンには約4000個のキーを格納できます。

inactiveパラメーターで指定された時間内にアクセスされなかったキャッシュデータは、その鮮度に関係なくキャッシュから削除されます。 デフォルトでは、inactiveは10分に設定されています。

特別な「キャッシュマネージャー」プロセスは、max_sizeパラメーターによって設定された最大キャッシュサイズと、ファイルシステムのmin_free(1.19.1)パラメーターによって設定された最小空き容量を監視します。キャッシュ。 サイズを超えた場合、または十分な空き領域がない場合は、使用頻度の最も低いデータが削除されます。 データは、manager_filesmanager_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(コンテンツなし)応答を返すことによって示されます。

パージ要求のキャッシュキーがアスタリスク(「*」)で終わる場合、ワイルドカードキーに一致するすべてのキャッシュエントリがキャッシュから削除されます。 ただし、これらのエントリは、非アクティブで削除されるか、キャッシュパージャー(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 on | off;
デフォルト:
fastcgi_cache_revalidate off;
コンテクスト: http, server, location

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

「If-Modified-Since」および「If-None-Match」ヘッダーフィールドを持つ条件付きリクエストを使用して、期限切れのキャッシュアイテムの再検証を有効にします。

構文: fastcgi_cache_use_stale
error |
timeout |
invalid_header |
updating |
http_500 |
http_503 |
http_403 |
http_404 |
http_429 |
off
...;
デフォルト:
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 [code ...] time;
デフォルト:
コンテクスト: 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)を考慮してキャッシュされます。

fastcgi_ignore_headers ディレクティブを使用して、これらの応答ヘッダーフィールドの1つ以上の処理を無効にすることができます。

構文: fastcgi_catch_stderr string;
デフォルト:
コンテクスト: 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 time;
デフォルト:
fastcgi_connect_timeout 60s;
コンテクスト: http, server, location

FastCGIサーバーとの接続を確立するためのタイムアウトを定義します。 このタイムアウトは通常75秒を超えることはできないことに注意してください。

構文: fastcgi_force_ranges on | off;
デフォルト:
fastcgi_force_ranges off;
コンテクスト: http, server, location

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

これらの応答の「Accept-Ranges」フィールドに関係なく、FastCGIサーバーからのキャッシュされた応答とキャッシュされていない応答の両方のバイト範囲サポートを有効にします。

構文: fastcgi_hide_header field;
デフォルト:
コンテクスト: http, server, location

デフォルトでは、nginxはFastCGIサーバーの応答からクライアントにヘッダーフィールド「Status」と「X-Accel-…」を渡しません。 fastcgi_hide_headerディレクティブは、渡されない追加のフィールドを設定します。 逆に、フィールドの受け渡しを許可する必要がある場合は、fastcgi_pass_headerディレクティブを使用できます。

構文: fastcgi_ignore_client_abort on | off;
デフォルト:
fastcgi_ignore_client_abort off;
コンテクスト: http, server, location

クライアントが応答を待たずに接続を閉じるときに、FastCGIサーバーとの接続を閉じる必要があるかどうかを決定します。

構文: fastcgi_ignore_headers field ...;
デフォルト:
コンテクスト: 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」は、応答cacheingのパラメーターを設定します。
  • 「X-Accel-Redirect」は、指定されたURIへの内部リダイレクトを実行します。
  • 「X-Accel-Limit-Rate」は、クライアントに応答を送信するための ratelimitを設定します。
  • 「X-Accel-Buffering」は、応答のbufferingを有効または無効にします。
  • 「X-Accel-Charset」は、応答の目的のcharsetを設定します。

構文: fastcgi_index name;
デフォルト:
コンテクスト: 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 on | off;
デフォルト:
fastcgi_intercept_errors off;
コンテクスト: http, server, location

コードが300以上のFastCGIサーバー応答をクライアントに渡すか、error_pageディレクティブで処理するためにインターセプトしてnginxにリダイレクトするかを決定します。

構文: fastcgi_keep_conn on | off;
デフォルト:
fastcgi_keep_conn off;
コンテクスト: http, server, location

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

デフォルトでは、FastCGIサーバーは応答を送信した直後に接続を閉じます。 ただし、このディレクティブが値onに設定されている場合、nginxはFastCGIサーバーに接続を開いたままにするように指示します。 これは、特にFastCGIサーバーへのキープアライブ接続が機能するために必要です。

構文: fastcgi_limit_rate rate;
デフォルト:
fastcgi_limit_rate 0;
コンテクスト: http, server, location

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

FastCGIサーバーからの応答を読み取る速度を制限します。 rateは、1秒あたりのバイト数で指定されます。 ゼロ値はレート制限を無効にします。 制限はリクエストごとに設定されるため、nginxがFastCFIサーバーへの2つの接続を同時に開くと、全体のレートは指定された制限の2倍になります。 この制限は、FastCGIサーバーからの応答のバッファリングが有効になっている場合にのみ機能します。

構文: fastcgi_max_temp_file_size size;
デフォルト:
fastcgi_max_temp_file_size 1024m;
コンテクスト: http, server, location

FastCGIサーバーからの応答のbufferingが有効になっていて、応答全体がfastcgi_buffer_sizeおよびfastcgi_buffersディレクティブによって設定されたバッファーに収まらない場合、応答は一時ファイルに保存できます。 このディレクティブは、一時ファイルの最大sizeを設定します。 一時ファイルに一度に書き込まれるデータのサイズは、fastcgi_temp_file_write_sizeディレクティブによって設定されます。

ゼロの値は、一時ファイルへの応答のバッファリングを無効にします。

この制限は、ディスクにキャッシュまたは保存される応答には適用されません。

構文: fastcgi_next_upstream
error |
timeout |
invalid_header |
http_500 |
http_503 |
http_403 |
http_404 |
http_429 |
non_idempotent |
off
...;
デフォルト:
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
通常、非べき等メソッド(POSTLOCKPATCH)のリクエストは、リクエストが送信された場合、次のサーバーに渡されません。アップストリームサーバー(1.9.13); このオプションを有効にすると、そのような要求を明示的に再試行できます。
off
次のサーバーへのリクエストの受け渡しを無効にします。

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

ディレクティブは、サーバーとの通信の失敗した試行と見なされるものも定義します。 errortimeout、およびinvalid_headerの場合は、ディレクティブで指定されていない場合でも、常に失敗した試行と見なされます。 http_500http_503、およびhttp_429の場合は、ディレクティブで指定されている場合にのみ、失敗した試行と見なされます。 http_403およびhttp_404の場合は、失敗した試行とは見なされません。

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

構文: fastcgi_next_upstream_timeout time;
デフォルト:
fastcgi_next_upstream_timeout 0;
コンテクスト: http, server, location

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

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

構文: fastcgi_next_upstream_tries number;
デフォルト:
fastcgi_next_upstream_tries 0;
コンテクスト: http, server, location

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

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

構文: fastcgi_no_cache string ...;
デフォルト:
コンテクスト: 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
parameter value
[if_not_empty];
デフォルト:
コンテクスト: http, server, location

FastCGIサーバーに渡す必要があるparameterを設定します。 valueには、テキスト、変数、およびそれらの組み合わせを含めることができます。 これらのディレクティブは、現在のレベルで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 address;
デフォルト:
コンテクスト: location, if in location

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

fastcgi_pass localhost:9000;

またはUNIXドメインソケットパスとして:

fastcgi_pass unix:/tmp/fastcgi.socket;

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

パラメータ値には変数を含めることができます。 この場合、ドメイン名としてアドレスが指定されている場合は、記載されているサーバーグループから名前を検索し、見つからない場合はリゾルバーを使用して決定します。

構文: fastcgi_pass_header field;
デフォルト:
コンテクスト: http, server, location

FastCGIサーバーからクライアントにそれ以外の場合は無効ヘッダーフィールドを渡すことを許可します。

構文: fastcgi_pass_request_body on | off;
デフォルト:
fastcgi_pass_request_body on;
コンテクスト: http, server, location

元のリクエスト本文がFastCGIサーバーに渡されるかどうかを示します。 fastcgi_pass_request_headersディレクティブも参照してください。

構文: fastcgi_pass_request_headers on | off;
デフォルト:
fastcgi_pass_request_headers on;
コンテクスト: http, server, location

元のリクエストのヘッダーフィールドがFastCGIサーバーに渡されるかどうかを示します。 fastcgi_pass_request_bodyディレクティブも参照してください。

構文: fastcgi_read_timeout time;
デフォルト:
fastcgi_read_timeout 60s;
コンテクスト: http, server, location

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

構文: fastcgi_request_buffering on | off;
デフォルト:
fastcgi_request_buffering on;
コンテクスト: http, server, location

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

クライアント要求本文のバッファリングを有効または無効にします。

バッファリングが有効になっている場合、FastCGIサーバーにリクエストを送信する前に、リクエスト本文全体がクライアントから読み取りされます。

バッファリングが無効になっている場合、リクエスト本文は受信されるとすぐにFastCGIサーバーに送信されます。 この場合、nginxがすでにリクエスト本文の送信を開始していると、次のサーバーにリクエストを渡すことができません。

構文: fastcgi_send_lowat size;
デフォルト:
fastcgi_send_lowat 0;
コンテクスト: http, server, location

ディレクティブがゼロ以外の値に設定されている場合、nginxは、 kqueueメソッドのNOTE_LOWATフラグを使用して、FastCGIサーバーへの発信接続での送信操作の数を最小限に抑えようとします。または、SO_SNDLOWATソケットオプションを指定し、sizeを指定します。

このディレクティブは、Linux、Solaris、およびWindowsでは無視されます。

構文: fastcgi_send_timeout time;
デフォルト:
fastcgi_send_timeout 60s;
コンテクスト: http, server, location

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

構文: fastcgi_socket_keepalive on | off;
デフォルト:
fastcgi_socket_keepalive off;
コンテクスト: http, server, location

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

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

構文: fastcgi_split_path_info regex;
デフォルト:
コンテクスト: 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
on |
off |
string;
デフォルト:
fastcgi_store off;
コンテクスト: http, server, location

ファイルをディスクに保存できるようにします。 onパラメーターは、ディレクティブaliasまたはrootに対応するパスを持つファイルを保存します。 offパラメーターは、ファイルの保存を無効にします。 さらに、ファイル名は、stringと変数を使用して明示的に設定できます。

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 users:permissions ...;
デフォルト:
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 size;
デフォルト:
fastcgi_temp_file_write_size 8k|16k;
コンテクスト: http, server, location

FastCGIサーバーから一時ファイルへの応答のバッファリングが有効になっている場合に、一時ファイルに一度に書き込まれるデータのsizeを制限します。 デフォルトでは、sizeは、fastcgi_buffer_sizeおよびfastcgi_buffersディレクティブによって設定された2つのバッファーによって制限されます。 一時ファイルの最大サイズは、fastcgi_max_temp_file_sizeディレクティブによって設定されます。

構文: fastcgi_temp_path
path
[level1
[level2
[level3]]];
デフォルト:
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」と等しくなります。