モジュール ngx_http_core_module
ディレクティブ
構文 |
absolute_redirect |
---|---|
デフォルト |
absolute_redirect on; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン1.11.8で登場しました。
無効にすると、nginxによって発行されるリダイレクトは相対的になります。
server_name_in_redirectおよびport_in_redirectディレクティブも参照してください。
構文 |
aio |
---|---|
デフォルト |
aio off; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン0.8.11で登場しました。
FreeBSDおよびLinuxで非同期ファイルI/O(AIO)の使用を有効または無効にします。
location /video/ { aio on; output_buffers 1 64k; }
FreeBSDでは、FreeBSD 4.3以降でAIOを使用できます。FreeBSD 11.0より前は、AIOはカーネルに静的にリンクするか、
options VFS_AIO
カーネルロード可能モジュールとして動的にロードできます。
kldload aio
Linuxでは、カーネルバージョン2.6.22以降でAIOを使用できます。directioを有効にする必要があります。そうでない場合、読み込みはブロッキングになります。
location /video/ { aio on; directio 512; output_buffers 1 128k; }
Linuxでは、directioは、512バイト境界(またはXFSの場合は4K)にアラインメントされたブロックの読み取りにのみ使用できます。ファイルの非アラインメントされた部分はブロッキングモードで読み取られます。バイト範囲要求とファイルの先頭からのFLV要求にも同じことが当てはまります。ファイルの先頭と末尾の非アラインメントされたデータの読み取りはブロッキングになります。
LinuxでAIOとsendfileの両方が有効になっている場合、directioディレクティブで指定されたサイズ以上のファイルにはAIOが使用され、それより小さいファイルまたはdirectioが無効になっている場合はsendfileが使用されます。
location /video/ { sendfile on; aio on; directio 8m; }
最後に、ファイルをマルチスレッド(1.7.11)を使用して読み書きし、ワーカープロセスをブロックすることなく送信できます。
location /video/ { sendfile on; aio threads; }
ファイルの読み取りと送信操作は、指定されたプールのスレッドにオフロードされます。プール名が省略された場合は、「default
」という名前のプールが使用されます。プール名は変数でも設定できます。
aio threads=pool$disk;
デフォルトでは、マルチスレッディングは無効になっています。--with-threads
構成パラメータで有効にする必要があります。現在、マルチスレッディングはepoll、kqueue、eventportメソッドのみと互換性があります。ファイルのマルチスレッド送信はLinuxでのみサポートされています。
sendfileディレクティブも参照してください。
構文 |
aio_write |
---|---|
デフォルト |
aio_write off; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン1.9.13で登場しました。
aioが有効になっている場合、ファイルの書き込みに使用されるかどうかを指定します。現在、これはaio threads
を使用する場合にのみ機能し、プロキシされたサーバーから受信したデータを含む一時ファイルの書き込みに限定されています。
構文 |
alias |
---|---|
デフォルト | — |
コンテキスト |
location |
指定されたロケーションの置換を定義します。たとえば、次の構成では
location /i/ { alias /data/w3/images/; }
「/i/top.gif
」のリクエストに対して、ファイル/data/w3/images/top.gif
が送信されます。
path
の値には、$document_root
と$realpath_root
を除く変数を含めることができます。
正規表現で定義されたlocation内でalias
を使用する場合、その正規表現にはキャプチャを含める必要があり、alias
はこれらのキャプチャを参照する必要があります(0.7.40)。たとえば
location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ { alias /data/w3/images/$1; }
ディレクティブの値の最後の部分とlocationが一致する場合
location /images/ { alias /data/w3/images/; }
rootディレクティブを使用することをお勧めします。
location /images/ { root /data/w3; }
構文 |
auth_delay |
---|---|
デフォルト |
auth_delay 0s; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン1.17.10で登場しました。
パスワード、サブリクエストの結果、またはJWTによってアクセスが制限されている場合、401応答コードを持つ承認されていないリクエストの処理を遅延させて、タイミング攻撃を防ぎます。
構文 |
chunked_transfer_encoding |
---|---|
デフォルト |
chunked_transfer_encoding on; |
コンテキスト |
http 、server 、location |
HTTP/1.1でチャンク転送エンコーディングの無効化を許可します。標準の要件にもかかわらず、チャンクエンコーディングをサポートできないソフトウェアを使用する場合に役立つ場合があります。
構文 |
client_body_buffer_size |
---|---|
デフォルト |
client_body_buffer_size 8k|16k; |
コンテキスト |
http 、server 、location |
クライアントリクエストボディの読み取りバッファサイズを設定します。リクエストボディがバッファより大きい場合、ボディ全体または一部が一時ファイルに書き込まれます。デフォルトでは、バッファサイズは2つのメモリページと同じです。x86、その他の32ビットプラットフォーム、およびx86-64では8Kです。通常、その他の64ビットプラットフォームでは16Kです。
構文 |
client_body_in_file_only |
---|---|
デフォルト |
client_body_in_file_only off; |
コンテキスト |
http 、server 、location |
nginxがクライアントリクエストボディ全体をファイルに保存するかどうかを決定します。このディレクティブは、デバッグ中、または$request_body_file
変数を使用する場合、またはngx_http_perl_moduleモジュールの$r->request_body_fileメソッドを使用する場合に使用できます。
on
に設定すると、リクエスト処理後に一時ファイルは削除されません。
clean
値は、リクエスト処理後に残った一時ファイルを削除します。
構文 |
client_body_in_single_buffer |
---|---|
デフォルト |
client_body_in_single_buffer off; |
コンテキスト |
http 、server 、location |
nginxがクライアントリクエストボディ全体を単一のバッファに保存するかどうかを決定します。$request_body
変数を使用する場合、関与するコピー操作の数を節約するために、このディレクティブをお勧めします。
構文 |
client_body_temp_path |
---|---|
デフォルト |
client_body_temp_path client_body_temp; |
コンテキスト |
http 、server 、location |
クライアントリクエストボディを格納する一時ファイルを格納するためのディレクトリを定義します。指定されたディレクトリの下に、最大3レベルのサブディレクトリ階層を使用できます。たとえば、次の構成では
client_body_temp_path /spool/nginx/client_temp 1 2;
一時ファイルへのパスは次のようになります。
/spool/nginx/client_temp/7/45/00000123457
構文 |
client_body_timeout |
---|---|
デフォルト |
client_body_timeout 60s; |
コンテキスト |
http 、server 、location |
クライアントリクエストボディの読み取りタイムアウトを定義します。タイムアウトは、2つの連続した読み取り操作の間の期間のみに設定され、リクエストボディ全体の伝送には設定されません。この時間内にクライアントが何も送信しないと、リクエストは408(リクエストタイムアウト)エラーで終了します。
構文 |
client_header_buffer_size |
---|---|
デフォルト |
client_header_buffer_size 1k; |
コンテキスト |
http 、server |
クライアントリクエストヘッダーの読み取りバッファサイズを設定します。ほとんどのリクエストでは、1Kバイトのバッファで十分です。ただし、リクエストに長いクッキーが含まれている場合、またはWAPクライアントからのものである場合、1Kに収まらない場合があります。リクエスト行またはリクエストヘッダーフィールドがこのバッファに収まらない場合、large_client_header_buffersディレクティブで構成されたより大きなバッファが割り当てられます。
serverレベルでディレクティブが指定されている場合、デフォルトサーバーからの値を使用できます。詳細は、「仮想サーバーの選択」セクションに記載されています。
構文 |
client_header_timeout |
---|---|
デフォルト |
client_header_timeout 60s; |
コンテキスト |
http 、server |
クライアントリクエストヘッダーの読み取りタイムアウトを定義します。この時間内にクライアントがヘッダー全体を送信しないと、リクエストは408(リクエストタイムアウト)エラーで終了します。
構文 |
client_max_body_size |
---|---|
デフォルト |
client_max_body_size 1m; |
コンテキスト |
http 、server 、location |
クライアントリクエストボディの最大許容サイズを設定します。リクエストのサイズが構成された値を超えると、413(リクエストエンティティが大きすぎます)エラーがクライアントに返されます。ブラウザはこのエラーを正しく表示できないことに注意してください。size
を0に設定すると、クライアントリクエストボディサイズのチェックが無効になります。
構文 |
connection_pool_size |
---|---|
デフォルト |
connection_pool_size 256|512; |
コンテキスト |
http 、server |
接続ごとのメモリ割り当ての正確な調整を可能にします。このディレクティブはパフォーマンスへの影響が最小限であり、一般的には使用しないでください。デフォルトでは、32ビットプラットフォームでは256バイト、64ビットプラットフォームでは512バイトです。
バージョン1.9.8より前は、すべてのプラットフォームでデフォルト値は256でした。
構文 |
default_type |
---|---|
デフォルト |
default_type text/plain; |
コンテキスト |
http 、server 、location |
応答のデフォルトのMIMEタイプを定義します。ファイル名拡張子のMIMEタイプへのマッピングは、typesディレクティブで設定できます。
構文 |
directio |
---|---|
デフォルト |
directio off; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン0.7.7で登場しました。
指定されたsize
以上のファイルを読み取る際に、O_DIRECT
フラグ(FreeBSD、Linux)、F_NOCACHE
フラグ(macOS)、またはdirectio()
関数(Solaris)の使用を有効にします。このディレクティブは、特定のリクエストに対してsendfileの使用を自動的に無効にします(0.7.15)。大きなファイルを提供する場合
directio 4m;
またはLinuxでaioを使用する場合に役立ちます。
構文 |
directio_alignment |
---|---|
デフォルト |
directio_alignment 512; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン0.8.11で登場しました。
directioのアラインメントを設定します。ほとんどの場合、512バイトのアラインメントで十分です。ただし、LinuxでXFSを使用する場合は、4Kに増やす必要があります。
構文 |
disable_symlinks disable_symlinks |
---|---|
デフォルト |
disable_symlinks off; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン1.1.15で登場しました。
ファイルをオープンする際のシンボリックリンクの処理方法を決定します。
off
- パス名のシンボリックリンクは許可され、チェックされません。これがデフォルトの動作です。
on
- パス名のコンポーネントがシンボリックリンクである場合、ファイルへのアクセスは拒否されます。
if_not_owner
- パス名のコンポーネントがシンボリックリンクであり、リンクとリンクが指すオブジェクトの所有者が異なる場合、ファイルへのアクセスは拒否されます。
from
=part
- シンボリックリンクのチェック(パラメータ
on
とif_not_owner
)では、通常、パス名のすべてのコンポーネントがチェックされます。パス名の先頭部分のシンボリックリンクのチェックを回避するには、さらにfrom
=part
パラメータを指定できます。この場合、シンボリックリンクは、指定された先頭部分の後のパス名コンポーネントからのみチェックされます。値がチェック対象のパス名の先頭部分ではない場合、このパラメータがまったく指定されていないかのように、パス名全体がチェックされます。値がファイル名全体と一致する場合、シンボリックリンクはチェックされません。パラメータ値には変数を指定できます。
例
disable_symlinks on from=$document_root;
このディレクティブは、openat()
とfstatat()
インターフェースを持つシステムでのみ使用できます。このようなシステムには、FreeBSD、Linux、Solarisの最新バージョンが含まれます。
パラメータon
とif_not_owner
は、処理オーバーヘッドを追加します。
ディレクトリの検索のみを目的としたオープンをサポートしていないシステムでは、これらのパラメータを使用するには、ワーカープロセスがチェック対象のすべてのディレクトリに対する読み取り権限を持っている必要があります。
ngx_http_autoindex_module、ngx_http_random_index_module、およびngx_http_dav_moduleモジュールは、現在このディレクティブを無視します。
構文 |
error_page |
---|---|
デフォルト | — |
コンテキスト |
http 、server 、location 、if in location |
指定されたエラーに対して表示されるURIを定義します。uri
値には変数を指定できます。
例
error_page 404 /404.html; error_page 500 502 503 504 /50x.html;
これにより、クライアントのリクエストメソッドが「GET
」に変更され(「GET
」と「HEAD
」以外のすべてのメソッドの場合)、指定されたuri
への内部リダイレクトが発生します。
さらに、「=
response
」構文を使用して、レスポンスコードを別のコードに変更することも可能です。例:
error_page 404 =200 /empty.gif;
エラー応答がプロキシサーバーまたはFastCGI/uwsgi/SCGI/gRPCサーバーによって処理され、サーバーが異なる応答コード(例:200、302、401、または404)を返す可能性がある場合、サーバーが返すコードで応答できます。
error_page 404 = /404.php;
内部リダイレクト中にURIとメソッドを変更する必要がない場合は、名前付きロケーションにエラー処理を渡すことができます。
location / { error_page 404 = @fallback; } location @fallback { proxy_pass http://backend; }
uri
の処理でエラーが発生した場合、最後に発生したエラーのステータスコードがクライアントに返されます。
エラー処理には、URLリダイレクトを使用することもできます。
error_page 403 http://example.com/forbidden.html; error_page 404 =301 http://example.com/notfound.html;
この場合、デフォルトでは、レスポンスコード302がクライアントに返されます。リダイレクトステータスコード(301、302、303、307、および308)のいずれかにのみ変更できます。
バージョン1.1.16と1.0.13までは、コード307はリダイレクトとして扱われていませんでした。
バージョン1.13.0までは、コード308はリダイレクトとして扱われていませんでした。
これらのディレクティブは、現在のレベルでerror_page
ディレクティブが定義されていない場合に限り、前の構成レベルから継承されます。
構文 |
etag |
---|---|
デフォルト |
etag on; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン1.3.3で追加されました。
静的リソースの「ETag」レスポンスヘッダーフィールドの自動生成を有効または無効にします。
構文 |
http { ... } |
---|---|
デフォルト | — |
コンテキスト |
main |
HTTPサーバーディレクティブが指定される構成ファイルのコンテキストを提供します。
構文 |
if_modified_since |
---|---|
デフォルト |
if_modified_since exact; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン0.7.24で追加されました。
レスポンスの変更時刻と「If-Modified-Since」リクエストヘッダーフィールドの時刻の比較方法を指定します。
off
- レスポンスは常に変更済みと見なされます (0.7.34);
exact
- 完全一致;
before
- レスポンスの変更時刻が「If-Modified-Since」リクエストヘッダーフィールドの時刻以下である場合。
構文 |
ignore_invalid_headers |
---|---|
デフォルト |
ignore_invalid_headers on; |
コンテキスト |
http 、server |
無効な名前のヘッダーフィールドを無視するかどうかを制御します。有効な名前は、英字、数字、ハイフン、および場合によってはアンダースコア(underscores_in_headersディレクティブで制御)で構成されます。
serverレベルでディレクティブが指定されている場合、デフォルトサーバーからの値を使用できます。詳細は、「仮想サーバーの選択」セクションに記載されています。
構文 |
internal; |
---|---|
デフォルト | — |
コンテキスト |
location |
指定されたロケーションを内部リクエストのみに使用できることを指定します。外部リクエストの場合、クライアントエラー404(見つかりません)が返されます。内部リクエストとは、以下のリクエストです。
- error_page、index、internal_redirect、random_index、およびtry_filesディレクティブによってリダイレクトされたリクエスト;
- アップストリームサーバーからの「X-Accel-Redirect」レスポンスヘッダーフィールドによってリダイレクトされたリクエスト;
- ngx_http_ssi_moduleモジュールの「
include virtual
」コマンド、ngx_http_addition_moduleモジュールのディレクティブ、およびauth_requestとmirrorディレクティブによって形成されたサブリクエスト; - rewriteディレクティブによって変更されたリクエスト。
例
error_page 404 /404.html; location = /404.html { internal; }
不正な構成で発生する可能性のあるリクエスト処理サイクルを防ぐために、リクエストごとに10回の内部リダイレクトの制限があります。この制限に達すると、エラー500(内部サーバーエラー)が返されます。このような場合、「rewriteまたは内部リダイレクションサイクル」というメッセージがエラーログに表示されることがあります。
構文 |
keepalive_disable |
---|---|
デフォルト |
keepalive_disable msie6; |
コンテキスト |
http 、server 、location |
動作不良のブラウザとのキープアライブ接続を無効にします。browser
パラメータは、影響を受けるブラウザを指定します。値msie6
は、POSTリクエストを受信した後に、古いバージョンのMSIEとのキープアライブ接続を無効にします。値safari
は、macOSおよびmacOSライクなオペレーティングシステム上のSafariおよびSafariライクなブラウザとのキープアライブ接続を無効にします。値none
は、すべてのブラウザとのキープアライブ接続を有効にします。
バージョン1.1.18より前では、値safari
はすべてのオペレーティングシステム上のすべてのSafariおよびSafariライクなブラウザに一致し、それらとのキープアライブ接続はデフォルトで無効になっていました。
構文 |
keepalive_requests |
---|---|
デフォルト |
keepalive_requests 1000; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン0.8.0で追加されました。
1つのキープアライブ接続で処理できるリクエストの最大数を設定します。最大リクエスト数に達すると、接続が閉じられます。
接続を定期的に閉じることで、接続ごとのメモリ割り当てを解放する必要があります。したがって、リクエストの最大数を高すぎると、過剰なメモリ使用量につながる可能性があり、推奨されません。
バージョン1.19.10より前では、デフォルト値は100でした。
構文 |
keepalive_time |
---|---|
デフォルト |
keepalive_time 1h; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン1.19.10で追加されました。
1つのキープアライブ接続を通じてリクエストを処理できる最大時間を制限します。この時間に達すると、後続のリクエスト処理後に接続が閉じられます。
構文 |
keepalive_timeout |
---|---|
デフォルト |
keepalive_timeout 75s; |
コンテキスト |
http 、server 、location |
最初のタイムアウトパラメータは、キープアライブクライアント接続がサーバー側で開いたままになる時間を設定します。値が0の場合、キープアライブクライアント接続は無効になります。オプションの2番目のパラメータは、「Keep-Alive: timeout=time
」レスポンスヘッダーフィールドの値を設定します。2つのパラメータは異なる場合があります。
「Keep-Alive: timeout=time
」ヘッダーフィールドは、MozillaとKonquerorで認識されます。MSIEは、約60秒でキープアライブ接続を自分で閉じます。
構文 |
large_client_header_buffers |
---|---|
デフォルト |
large_client_header_buffers 4 8k; |
コンテキスト |
http 、server |
大きなクライアントリクエストヘッダーの読み取りに使用されるバッファの最大number
とsize
を設定します。リクエスト行は1つのバッファのサイズを超えることはできません。そうでない場合、414(Request-URI Too Large)エラーがクライアントに返されます。リクエストヘッダーフィールドも1つのバッファのサイズを超えることはできません。そうでない場合、400(Bad Request)エラーがクライアントに返されます。バッファはオンデマンドで割り当てられます。デフォルトでは、バッファサイズは8KBです。リクエスト処理の終了後に接続がキープアライブ状態に移行すると、これらのバッファは解放されます。
serverレベルでディレクティブが指定されている場合、デフォルトサーバーからの値を使用できます。詳細は、「仮想サーバーの選択」セクションに記載されています。
構文 |
limit_except |
---|---|
デフォルト | — |
コンテキスト |
location |
ロケーション内で許可されるHTTPメソッドを制限します。method
パラメータは、GET
、HEAD
、POST
、PUT
、DELETE
、MKCOL
、COPY
、MOVE
、OPTIONS
、PROPFIND
、PROPPATCH
、LOCK
、UNLOCK
、またはPATCH
のいずれかになります。GET
メソッドを許可すると、HEAD
メソッドも許可されます。ngx_http_access_module、ngx_http_auth_basic_module、およびngx_http_auth_jwt_module (1.13.10) モジュールのディレクティブを使用して、他のメソッドへのアクセスを制限できます。
limit_except GET { allow 192.168.1.0/32; deny all; }
これは、GETとHEAD以外のすべてのメソッドへのアクセスを制限することに注意してください。
構文 |
limit_rate |
---|---|
デフォルト |
limit_rate 0; |
コンテキスト |
http 、server 、location 、if in location |
クライアントへのレスポンス送信の速度を制限します。rate
は、秒あたりのバイト数で指定されます。値が0の場合、レート制限は無効になります。制限はリクエストごとに設定されるため、クライアントが同時に2つの接続を開くと、全体のレートは指定された制限の2倍になります。
パラメータ値には変数を指定できます(1.17.0)。特定の条件に応じてレートを制限する必要がある場合に役立ちます。
map $slow $rate { 1 4k; 2 8k; } limit_rate $rate;
$limit_rate
変数でもレート制限を設定できますが、バージョン1.17.0以降、この方法は推奨されません。
server { if ($slow) { set $limit_rate 4k; } ... }
プロキシサーバーのレスポンスの「X-Accel-Limit-Rate」ヘッダーフィールドでもレート制限を設定できます。この機能は、proxy_ignore_headers、fastcgi_ignore_headers、uwsgi_ignore_headers、およびscgi_ignore_headersディレクティブを使用して無効にできます。
構文 |
limit_rate_after |
---|---|
デフォルト |
limit_rate_after 0; |
コンテキスト |
http 、server 、location 、if in location |
このディレクティブはバージョン0.8.0で追加されました。
クライアントへのレスポンスのさらなる送信がレート制限される前の初期量を設定します。パラメータ値には変数を指定できます(1.17.0)。
例
location /flv/ { flv; limit_rate_after 500k; limit_rate 50k; }
構文 |
lingering_close |
---|---|
デフォルト |
lingering_close on; |
コンテキスト |
http 、server 、location |
このディレクティブは、バージョン1.1.0と1.0.6で追加されました。
nginxがクライアント接続を閉じる方法を制御します。
デフォルト値の「on
」は、nginxに待機して処理を指示します。クライアントがさらにデータを送信する可能性があることをヒューリスティックが示唆する場合のみ、クライアントからの追加データ。
値「always
」は、nginxに無条件に追加のクライアントデータの待機と処理を強制します。
値「off
」は、nginxにさらにデータの待機をせずに接続をすぐに閉じるように指示します。この動作はプロトコルを破るため、通常の状況下では使用しないでください。
HTTP/2接続の閉じ方を制御するには、serverレベルでディレクティブを指定する必要があります(1.19.1)。
構文 |
lingering_time |
---|---|
デフォルト |
lingering_time 30s; |
コンテキスト |
http 、server 、location |
lingering_close が有効な場合、このディレクティブはnginxがクライアントから送られてくる追加データの処理(読み込みと無視)を行う最大時間を指定します。この時間経過後、たとえさらにデータが残っていても接続は閉じられます。
構文 |
lingering_timeout |
---|---|
デフォルト |
lingering_timeout 5s; |
コンテキスト |
http 、server 、location |
lingering_close が有効な場合、このディレクティブはクライアントからのデータの到着を待機する最大時間を指定します。この時間内にデータが受信されなければ、接続は閉じられます。そうでなければ、データは読み込まれて無視され、nginxはさらにデータの到着を待ち始めます。「待機-読み込み-無視」のサイクルが繰り返されますが、lingering_time ディレクティブで指定された時間以内です。
構文 |
listen listen listen |
---|---|
デフォルト |
listen *:80 | *:8000; |
コンテキスト |
server |
サーバーがリクエストを受け付けるIPアドレスとポート、またはUNIXドメインソケットのパスを設定します。アドレスとポートの両方、またはアドレスのみ、またはポートのみを指定できます。アドレスにはホスト名も指定できます。例えば
listen 127.0.0.1:8000; listen 127.0.0.1; listen 8000; listen *:8000; listen localhost:8000;
IPv6アドレス (0.7.36) は角括弧で囲んで指定します。
listen [::]:8000; listen [::1];
UNIXドメインソケット (0.8.21) は「unix:
」プレフィックスを付けて指定します。
listen unix:/var/run/nginx.sock;
アドレスのみが指定されている場合、ポート80が使用されます。
このディレクティブが存在しない場合、nginxがスーパーユーザー権限で実行されている場合は*:80
が、そうでない場合は*:8000
が使用されます。
default_server
パラメータが存在する場合、そのサーバーは指定されたアドレス
:ポート
ペアのデフォルトサーバーになります。どのディレクティブにもdefault_server
パラメータがない場合、アドレス
:ポート
ペアを持つ最初のサーバーがこのペアのデフォルトサーバーになります。
0.8.21以前のバージョンでは、このパラメータは単にdefault
と呼ばれていました。
ssl
パラメータ (0.7.14) は、このポートで受け付けられるすべての接続がSSLモードで動作することを指定できます。これにより、HTTPとHTTPSのリクエストの両方を処理するサーバーのよりコンパクトな設定が可能になります。
http2
パラメータ (1.9.5) は、ポートがHTTP/2接続を受け付けるように設定します。通常、これが機能するためにはssl
パラメータも指定する必要がありますが、nginxはSSLなしでHTTP/2接続を受け付けるように設定することもできます。
このパラメータは非推奨です。http2ディレクティブを使用する必要があります。
quic
パラメータ (1.25.0) は、ポートがQUIC接続を受け付けるように設定します。
proxy_protocol
パラメータ (1.5.12) は、このポートで受け付けられるすべての接続がPROXYプロトコルを使用することを指定できます。
PROXYプロトコルバージョン2はバージョン1.13.11以降でサポートされています。
listen
ディレクティブには、ソケット関連のシステムコールに固有の追加パラメータがいくつかあります。これらのパラメータは任意のlisten
ディレクティブで指定できますが、特定のアドレス
:ポート
ペアに対しては一度だけ指定できます。
0.8.21以前のバージョンでは、default
パラメータと共にlisten
ディレクティブにのみ指定できました。
-
setfib
=番号
- このパラメータ (0.8.44) は、リスニングソケットの関連付けられたルーティングテーブル、FIB (
SO_SETFIB
オプション) を設定します。これは現在、FreeBSDでのみ機能します。 -
fastopen
=番号
- リスニングソケットに対して「TCP Fast Open」を有効にし(1.5.8)、まだ3ウェイハンドシェイクを完了していない接続のキューの最大長を制限します。
サーバーが同じSYNパケットをデータと共に複数回受信できる場合を除き、この機能を有効にしないでください。
-
backlog
=番号
- 保留中の接続のキューの最大長を制限する
listen()
呼び出しにおけるbacklog
パラメータを設定します。デフォルトでは、backlog
はFreeBSD、DragonFly BSD、macOSでは-1に、その他のプラットフォームでは511に設定されます。 -
rcvbuf
=サイズ
- リスニングソケットの受信バッファサイズ (
SO_RCVBUF
オプション) を設定します。 -
sndbuf
=サイズ
- リスニングソケットの送信バッファサイズ (
SO_SNDBUF
オプション) を設定します。 -
accept_filter
=フィルタ
accept()
に渡す前に着信接続をフィルタリングするリスニングソケットのアクセプタフィルタの名前 (SO_ACCEPTFILTER
オプション) を設定します。これはFreeBSDとNetBSD 5.0以降でのみ機能します。可能な値はdatareadyとhttpreadyです。-
deferred
- Linuxで遅延
accept()
(TCP_DEFER_ACCEPT
ソケットオプション) を使用するように指示します。 -
bind
- 特定の
アドレス
:ポート
ペアに対して個別のbind()
呼び出しを行うように指示します。これは、同じポートだがアドレスが異なる複数のlisten
ディレクティブがあり、そのうちの1つのlisten
ディレクティブが指定されたポートのすべてのアドレスをリッスンしている場合(*:
ポート
)に役立ちます。nginxは*:
ポート
のみにbind()
します。この場合、接続を受け付けたアドレスを特定するためにgetsockname()
システムコールが行われることに注意してください。setfib
、fastopen
、backlog
、rcvbuf
、sndbuf
、accept_filter
、deferred
、ipv6only
、reuseport
、またはso_keepalive
パラメータが使用されている場合、特定のアドレス
:ポート
ペアに対しては常に個別のbind()
呼び出しが行われます。 -
ipv6only
=on
|off
- このパラメータ (0.7.42) は(
IPV6_V6ONLY
ソケットオプションを介して) ワイルドカードアドレス[::]
をリッスンしているIPv6ソケットがIPv6接続のみを受け入れるか、IPv6とIPv4の両方の接続を受け入れるかを決定します。このパラメータはデフォルトでオンになっています。起動時に一度だけ設定できます。バージョン1.3.4以前では、このパラメータが省略された場合、ソケットに対してオペレーティングシステムの設定が有効になっていました。
-
reuseport
- このパラメータ (1.9.1) は、各ワーカープロセスに対して個々のリスニングソケットを作成するよう指示します(Linux 3.9+およびDragonFly BSDでは
SO_REUSEPORT
ソケットオプション、FreeBSD 12+ではSO_REUSEPORT_LB
を使用)。これにより、カーネルは着信接続をワーカープロセス間で分散できます。これは現在、Linux 3.9+、DragonFly BSD、およびFreeBSD 12+(1.15.1)でのみ機能します。このオプションを不適切に使用すると、セキュリティ上の影響がある可能性があります。
-
so_keepalive
=on
|off
|[keepidle
]:[keepintvl
]:[keepcnt
] - このパラメータ (1.1.11) は、リスニングソケットの「TCP keepalive」動作を設定します。このパラメータが省略された場合、ソケットに対してオペレーティングシステムの設定が有効になります。「
on
」に設定されている場合、ソケットに対してSO_KEEPALIVE
オプションがオンになります。「off
」に設定されている場合、ソケットに対してSO_KEEPALIVE
オプションがオフになります。一部のオペレーティングシステムでは、TCP_KEEPIDLE
、TCP_KEEPINTVL
、TCP_KEEPCNT
ソケットオプションを使用して、ソケットごとにTCP keepaliveパラメータを設定できます。そのようなシステム(現在、Linux 2.4+、NetBSD 5+、FreeBSD 9.0-STABLE)では、keepidle
、keepintvl
、keepcnt
パラメータを使用して設定できます。1つまたは2つのパラメータを省略できます。その場合、対応するソケットオプションのシステムデフォルト設定が有効になります。例えば、
アイドルタイムアウト(so_keepalive=30m::10
TCP_KEEPIDLE
)を30分に設定し、プローブ間隔(TCP_KEEPINTVL
)をシステムデフォルトのままにし、プローブ回数(TCP_KEEPCNT
)を10プローブに設定します。
例
listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;
構文 |
location [ location |
---|---|
デフォルト | — |
コンテキスト |
server 、location |
リクエストURIに応じて設定を設定します。
マッチングは正規化されたURIに対して実行されます。「%XX
」形式でエンコードされたテキストのデコード、相対パスコンポーネント「.
」と「..
」への参照の解決、および隣接する2つ以上のスラッシュを1つのスラッシュに圧縮することが含まれます。
locationは、プレフィックス文字列、または正規表現によって定義できます。正規表現は、先行する「~*
」修飾子(大文字と小文字を区別しないマッチングの場合)、または「~
」修飾子(大文字と小文字を区別するマッチングの場合)で指定されます。与えられたリクエストに一致するlocationを見つけるために、nginxは最初にプレフィックス文字列を使用して定義されたlocation(プレフィックスlocation)をチェックします。その中で、最も長い一致するプレフィックスを持つlocationが選択され、記憶されます。次に、設定ファイルに出現する順序で正規表現がチェックされます。正規表現の検索は最初のマッチで終了し、対応する設定が使用されます。正規表現とのマッチが見つからない場合は、以前に記憶されたプレフィックスlocationの設定が使用されます。
location
ブロックは、以下に記載されている例外を除いてネストできます。
macOSやCygwinなどの大文字と小文字を区別しないオペレーティングシステムでは、プレフィックス文字列によるマッチングは大文字と小文字を区別しません(0.7.7)。ただし、比較は1バイトロケールに限定されます。
正規表現にはキャプチャを含めることができ(0.7.40)、後で他のディレクティブで使用できます。
最も長い一致するプレフィックスlocationに「^~
」修飾子が付いている場合、正規表現はチェックされません。
また、「=
」修飾子を使用すると、URIとlocationの完全一致を定義できます。完全一致が見つかった場合、検索は終了します。例えば、「/
」リクエストがよく発生する場合、「location = /
」を定義すると、これらのリクエストの処理速度が向上します。最初の比較の後すぐに検索が終了するためです。このようなlocationには、明らかにネストされたlocationを含めることはできません。
0.7.1から0.8.41までのバージョンでは、「=
」と「^~
」の修飾子がないプレフィックスlocationにリクエストが一致した場合も、検索は終了し、正規表現はチェックされませんでした。
上記の例を説明します。
location = / { [ configuration A ] } location / { [ configuration B ] } location /documents/ { [ configuration C ] } location ^~ /images/ { [ configuration D ] } location ~* \.(gif|jpg|jpeg)$ { [ configuration E ] }
「/
」リクエストは設定Aに一致し、「/index.html
」リクエストは設定Bに一致し、「/documents/document.html
」リクエストは設定Cに一致し、「/images/1.gif
」リクエストは設定Dに一致し、「/documents/1.jpg
」リクエストは設定Eに一致します。
「@
」プレフィックスは、名前付きlocationを定義します。このようなlocationは通常の請求処理には使用されず、代わりに請求のリダイレクトに使用されます。ネストすることはできず、ネストされたlocationを含めることはできません。
位置がスラッシュ文字で終わるプレフィックス文字列で定義されており、リクエストがproxy_pass、fastcgi_pass、uwsgi_pass、scgi_pass、memcached_pass、またはgrpc_passのいずれかによって処理される場合、特別な処理が実行されます。この文字列と等しいURIを持つリクエストに対して、末尾のスラッシュがない場合、スラッシュを追加したリクエストURIにコード301の恒久的なリダイレクトが返されます。これが望ましくない場合は、URIとlocationの完全一致を次のように定義できます。
location /user/ { proxy_pass http://user.example.com; } location = /user { proxy_pass http://login.example.com; }
構文 |
log_not_found |
---|---|
デフォルト |
log_not_found on; |
コンテキスト |
http 、server 、location |
error_logへのファイルが見つからないというエラーのログ記録を有効または無効にします。
構文 |
log_subrequest |
---|---|
デフォルト |
log_subrequest off; |
コンテキスト |
http 、server 、location |
access_logへのサブリクエストのログ記録を有効または無効にします。
構文 |
max_ranges |
---|---|
デフォルト | — |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン1.1.2で追加されました。
バイト範囲リクエストにおける許容される最大範囲数を制限します。制限を超えるリクエストは、バイト範囲が指定されていないものとして処理されます。デフォルトでは、範囲数に制限はありません。値をゼロにすると、バイト範囲のサポートが完全に無効になります。
構文 |
merge_slashes |
---|---|
デフォルト |
merge_slashes on; |
コンテキスト |
http 、server |
URI内の2つ以上隣接するスラッシュを1つのスラッシュに圧縮する処理を有効または無効にします。
この圧縮は、プレフィックス文字列と正規表現の位置の正しい照合に不可欠です。圧縮しないと、「//scripts/one.php
」リクエストは
location /scripts/ { ... }
一致せず、静的ファイルとして処理される可能性があります。そのため、「/scripts/one.php
」に変換されます。
URIにbase64でエンコードされた名前が含まれている場合、base64は内部的に「/
」文字を使用するため、圧縮をoff
にする必要がある場合があります。ただし、セキュリティ上の理由から、圧縮をオフにすることは避けた方が良いでしょう。
serverレベルでディレクティブが指定されている場合、デフォルトサーバーからの値を使用できます。詳細は、「仮想サーバーの選択」セクションに記載されています。
構文 |
msie_padding |
---|---|
デフォルト |
msie_padding on; |
コンテキスト |
http 、server 、location |
ステータスが400を超えるMSIEクライアントへのレスポンスにコメントを追加し、レスポンスサイズを512バイトに増やす処理を有効または無効にします。
構文 |
msie_refresh |
---|---|
デフォルト |
msie_refresh off; |
コンテキスト |
http 、server 、location |
MSIEクライアントに対してリダイレクトではなくリフレッシュを発行する処理を有効または無効にします。
構文 |
open_file_cache open_file_cache |
---|---|
デフォルト |
open_file_cache off; |
コンテキスト |
http 、server 、location |
以下の情報を格納できるキャッシュを設定します。
- 開いているファイルディスクリプタ、そのサイズ、および最終更新時刻;
- ディレクトリの存在に関する情報;
- 「ファイルが見つかりません」、「読み取り権限がありません」など、ファイル検索エラー。
エラーのキャッシュは、open_file_cache_errorsディレクティブで個別に有効にする必要があります。
このディレクティブには、以下のパラメータがあります。
-
max
- キャッシュ内の要素の最大数を設定します。キャッシュオーバーフローが発生すると、最後に使用された(LRU)要素が削除されます。
-
inactive
- この時間内にアクセスされていない場合、要素をキャッシュから削除するまでの時間を定義します。デフォルトは60秒です。
-
off
- キャッシュを無効にします。
例
open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on;
構文 |
open_file_cache_errors |
---|---|
デフォルト |
open_file_cache_errors off; |
コンテキスト |
http 、server 、location |
open_file_cacheによるファイル検索エラーのキャッシュを有効または無効にします。
構文 |
open_file_cache_min_uses |
---|---|
デフォルト |
open_file_cache_min_uses 1; |
コンテキスト |
http 、server 、location |
open_file_cacheディレクティブのinactive
パラメータで設定された期間中に、ファイルディスクリプタをキャッシュに開いたままにするために必要なファイルアクセスの最小数値
を設定します。
構文 |
open_file_cache_valid |
---|---|
デフォルト |
open_file_cache_valid 60s; |
コンテキスト |
http 、server 、location |
open_file_cache要素を検証するまでの時間を設定します。
構文 |
output_buffers |
---|---|
デフォルト |
output_buffers 2 32k; |
コンテキスト |
http 、server 、location |
ディスクからレスポンスを読み取るために使用されるバッファの数値
とサイズ
を設定します。
バージョン1.9.5より前は、デフォルト値は1 32kでした。
構文 |
port_in_redirect |
---|---|
デフォルト |
port_in_redirect on; |
コンテキスト |
http 、server 、location |
nginxによって発行される絶対リダイレクトでポートを指定するかどうかを有効または無効にします。
リダイレクトにおけるプライマリサーバ名の使用は、server_name_in_redirectディレクティブによって制御されます。
構文 |
postpone_output |
---|---|
デフォルト |
postpone_output 1460; |
コンテキスト |
http 、server 、location |
可能であれば、nginxが少なくともサイズ
バイトのデータを送信するまで、クライアントデータの送信を延期します。値をゼロにすると、データ送信の延期が無効になります。
構文 |
read_ahead |
---|---|
デフォルト |
read_ahead 0; |
コンテキスト |
http 、server 、location |
ファイル操作時のカーネルによる事前読み込み量を設定します。
Linuxでは、posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL)
システムコールが使用されるため、サイズ
パラメータは無視されます。
FreeBSDでは、FreeBSD 9.0-CURRENT以降でサポートされているfcntl(O_READAHEAD,
サイズ
)
システムコールが使用されます。FreeBSD 7はパッチを適用する必要があります。
構文 |
recursive_error_pages |
---|---|
デフォルト |
recursive_error_pages off; |
コンテキスト |
http 、server 、location |
error_pageディレクティブを使用した複数リダイレクトの実行を有効または無効にします。このようなリダイレクトの数は制限されています。
構文 |
request_pool_size |
---|---|
デフォルト |
request_pool_size 4k; |
コンテキスト |
http 、server |
リクエストごとのメモリ割り当ての正確な調整を可能にします。このディレクティブはパフォーマンスへの影響が最小限であるため、一般的には使用すべきではありません。
構文 |
reset_timedout_connection |
---|---|
デフォルト |
reset_timedout_connection off; |
コンテキスト |
http 、server 、location |
タイムアウトした接続と、非標準コード444(1.15.2)で閉じられた接続のリセットを有効または無効にします。リセットは次のように実行されます。ソケットを閉じる前に、タイムアウト値0でSO_LINGER
オプションが設定されます。ソケットが閉じられると、TCP RSTがクライアントに送信され、このソケットによって占有されているすべてのメモリが解放されます。これにより、既に閉じられたソケットが、バッファがいっぱいになったFIN_WAIT1状態で長時間保持されるのを防ぐのに役立ちます。
タイムアウトしたキープアライブ接続は、通常どおり閉じられることに注意してください。
構文 |
resolver |
---|---|
デフォルト | — |
コンテキスト |
http 、server 、location |
例として、アップストリームサーバのネームをアドレスに解決するために使用されるネームサーバを設定します。
resolver 127.0.0.1 [::1]:5353;
アドレスは、ドメイン名またはIPアドレスとして指定でき、オプションでポート(1.3.1、1.2.2)を指定できます。ポートを指定しない場合、ポート53が使用されます。ネームサーバはラウンドロビン方式でクエリされます。
バージョン1.1.7より前は、1つのネームサーバしか設定できませんでした。IPv6アドレスを使用してネームサーバを指定することは、バージョン1.3.1と1.2.2以降でサポートされています。
デフォルトでは、nginxは解決時にIPv4とIPv6の両方のアドレスを検索します。IPv4またはIPv6アドレスの検索が不要な場合は、ipv4=off
(1.23.1)またはipv6=off
パラメータを指定できます。
IPv6アドレスへの名前の解決は、バージョン1.5.8以降でサポートされています。
デフォルトでは、nginxはレスポンスのTTL値を使用して回答をキャッシュします。オプションのvalid
パラメータを使用すると、それを上書きできます。
resolver 127.0.0.1 [::1]:5353 valid=30s;
バージョン1.1.9より前は、キャッシュ時間の調整は不可能で、nginxは常に5分間回答をキャッシュしていました。
DNSスプーフィングを防ぐには、適切に保護された信頼できるローカルネットワークでDNSサーバを設定することをお勧めします。
オプションのstatus_zone
パラメータ(1.17.1)は、指定されたゾーン
のリクエストとレスポンスのDNSサーバ統計の収集を有効にします。このパラメータは、当社の商用サブスクリプションの一部として利用できます。
構文 |
resolver_timeout |
---|---|
デフォルト |
resolver_timeout 30s; |
コンテキスト |
http 、server 、location |
例として、名前解決のタイムアウトを設定します。
resolver_timeout 5s;
構文 |
root |
---|---|
デフォルト |
root html; |
コンテキスト |
http 、server 、location 、if in location |
リクエストのルートディレクトリを設定します。たとえば、次の設定では
location /i/ { root /data/w3; }
「/i/top.gif
」リクエストに対するレスポンスとして、/data/w3/i/top.gif
ファイルが送信されます。
path
の値には、$document_root
と$realpath_root
を除く変数を含めることができます。
ファイルへのパスは、URIをroot
ディレクティブの値に追加するだけで構成されます。URIを変更する必要がある場合は、aliasディレクティブを使用する必要があります。
構文 |
satisfy |
---|---|
デフォルト |
satisfy all; |
コンテキスト |
http 、server 、location |
ngx_http_access_module、ngx_http_auth_basic_module、ngx_http_auth_request_module、またはngx_http_auth_jwt_moduleモジュールのすべて(all
)または少なくとも1つ(any
)がアクセスを許可する場合にアクセスを許可します。
例
location / { satisfy any; allow 192.168.1.0/32; deny all; auth_basic "closed site"; auth_basic_user_file conf/htpasswd; }
構文 |
send_lowat |
---|---|
デフォルト |
send_lowat 0; |
コンテキスト |
http 、server 、location |
このディレクティブがゼロ以外の値に設定されている場合、nginxはkqueueメソッドのNOTE_LOWAT
フラグまたはSO_SNDLOWAT
ソケットオプションを使用して、クライアントソケットへの送信操作の数を最小限に抑えようとします。どちらの場合も、指定されたサイズ
が使用されます。
このディレクティブは、Linux、Solaris、およびWindowsでは無視されます。
構文 |
send_timeout |
---|---|
デフォルト |
send_timeout 60s; |
コンテキスト |
http 、server 、location |
クライアントへのレスポンスの送信のタイムアウトを設定します。タイムアウトは、2つの連続した書き込み操作の間でのみ設定され、レスポンス全体の送信に対しては設定されません。この時間内にクライアントが何も受信しなかった場合、接続は閉じられます。
構文 |
sendfile |
---|---|
デフォルト |
sendfile off; |
コンテキスト |
http 、server 、location 、if in location |
sendfile()
の使用を有効または無効にします。
nginx 0.8.12とFreeBSD 5.2.1以降では、sendfile()
のデータの事前ロードにaioを使用できます。
location /video/ { sendfile on; tcp_nopush on; aio on; }
この設定では、sendfile()
はSF_NODISKIO
フラグを使用して呼び出され、ディスクI/Oでブロックされなくなりますが、代わりにデータがメモリにないことを報告します。その後、nginxは1バイトを読み取ることで非同期データロードを開始します。最初の読み取り時に、FreeBSDカーネルはファイルの先頭128KBをメモリにロードしますが、次の読み取りでは16KB単位でデータがロードされます。これは、read_aheadディレクティブを使用して変更できます。
バージョン1.7.11より前は、aio sendfile;
で事前ロードを有効にすることができました。
構文 |
sendfile_max_chunk |
---|---|
デフォルト |
sendfile_max_chunk 2m; |
コンテキスト |
http 、server 、location |
1回のsendfile()
呼び出しで転送できるデータ量を制限します。制限がないと、1つの高速な接続がワーカープロセス全体を占有する可能性があります。
バージョン1.21.4より前は、デフォルトで制限はありませんでした。
構文 |
server { ... } |
---|---|
デフォルト | — |
コンテキスト |
http |
仮想サーバの設定を設定します。IPベース(IPアドレスに基づく)と名前ベース(「Host」リクエストヘッダーフィールドに基づく)の仮想サーバには明確な区別がありません。代わりに、listenディレクティブは、サーバへの接続を受け入れるすべてのアドレスとポートを記述し、server_nameディレクティブはすべてのサーバ名を一覧表示します。「nginxがリクエストを処理する方法」ドキュメントには、設定例が記載されています。
構文 |
server_name |
---|---|
デフォルト |
server_name ""; |
コンテキスト |
server |
例として、仮想サーバの名前を設定します。
server { server_name example.com www.example.com; }
最初の名前がプライマリサーバ名になります。
サーバ名には、名前の先頭または末尾の部分を置き換えるアスタリスク(「*
」)を含めることができます。
server { server_name example.com *.example.com www.example.*; }
このような名前は、ワイルドカード名と呼ばれます。
上記の名前の最初の2つは、1つにまとめることができます。
server { server_name .example.com; }
サーバ名には、名前の前にチルダ(「~
」)を付けることで正規表現を使用することもできます。
server { server_name www.example.com ~^www\d+\.example\.com$; }
正規表現には、後で他のディレクティブで使用できるキャプチャ(0.7.40)を含めることができます。
server { server_name ~^(www\.)?(.+)$; location / { root /sites/$2; } } server { server_name _; location / { root /sites/default; } }
正規表現の名前付きキャプチャは、後で他のディレクティブで使用できる変数(0.8.25)を作成します。
server { server_name ~^(www\.)?(?<domain>.+)$; location / { root /sites/$domain; } } server { server_name _; location / { root /sites/default; } }
ディレクティブのパラメータが「$hostname
」(0.9.4)に設定されている場合、マシンのホスト名が挿入されます。
空のサーバ名を指定することもできます(0.7.11)。
server { server_name www.example.com ""; }
これにより、このサーバは—デフォルトのサーバではなく—指定されたアドレス:ポートペアに対して、「Host」ヘッダーフィールドなしのリクエストを処理できます。これはデフォルトの設定です。
0.8.48より前は、マシンのホスト名がデフォルトで使用されていました。
名前で仮想サーバーを検索する場合、名前が複数の指定されたバリアントに一致する場合(例:ワイルドカード名と正規表現の両方に一致する場合)、以下の優先順位で最初に一致したバリアントが選択されます。
- 完全一致の名前
- アスタリスクで始まる最長のワイルドカード名(例:「
*.example.com
」) - アスタリスクで終わる最長のワイルドカード名(例:「
mail.*
」) - 最初に一致した正規表現(設定ファイルでの出現順)
サーバー名の詳細な説明は、別途用意されているサーバー名ドキュメントに記載されています。
構文 |
server_name_in_redirect |
---|---|
デフォルト |
server_name_in_redirect off; |
コンテキスト |
http 、server 、location |
nginxによって発行される絶対リダイレクトにおいて、server_nameディレクティブで指定されたプライマリサーバー名の使用を有効または無効にします。プライマリサーバー名の使用が無効になっている場合、「Host」リクエストヘッダーフィールドからの名前が使用されます。このフィールドが存在しない場合は、サーバーのIPアドレスが使用されます。
リダイレクトにおけるポートの使用は、port_in_redirectディレクティブによって制御されます。
構文 |
server_names_hash_bucket_size |
---|---|
デフォルト |
server_names_hash_bucket_size 32|64|128; |
コンテキスト |
http |
サーバー名ハッシュテーブルのバケットサイズを設定します。デフォルト値はプロセッサのキャッシュラインサイズによって異なります。ハッシュテーブルの設定に関する詳細は、別途用意されているドキュメントを参照してください。
構文 |
server_names_hash_max_size |
---|---|
デフォルト |
server_names_hash_max_size 512; |
コンテキスト |
http |
サーバー名ハッシュテーブルの最大size
を設定します。ハッシュテーブルの設定に関する詳細は、別途用意されているドキュメントを参照してください。
構文 |
server_tokens |
---|---|
デフォルト |
server_tokens on; |
コンテキスト |
http 、server 、location |
エラーページおよび「Server」レスポンスヘッダーフィールドでのnginxバージョンの出力の有効化または無効化を行います。
build
パラメーター(1.11.10)は、nginxバージョンとともにビルド名を出力します。
さらに、バージョン1.9.13以降の商用サブスクリプションの一部として、エラーページと「Server」レスポンスヘッダーフィールドの値を、変数を使用したstring
で明示的に設定できます。「Server」フィールドの出力は無効にするには、空文字列を使用します。
構文 |
subrequest_output_buffer_size |
---|---|
デフォルト |
subrequest_output_buffer_size 4k|8k; |
コンテキスト |
http 、server 、location |
このディレクティブはバージョン1.13.10で追加されました。
サブリクエストのレスポンスボディを格納するために使用されるバッファのsize
を設定します。デフォルトでは、バッファサイズは1つのメモリページ(プラットフォームに応じて4Kまたは8K)と同じです。ただし、小さくすることもできます。
このディレクティブは、メモリに保存されたレスポンスボディを持つサブリクエストにのみ適用されます。たとえば、このようなサブリクエストはSSIによって作成されます。
構文 |
tcp_nodelay |
---|---|
デフォルト |
tcp_nodelay on; |
コンテキスト |
http 、server 、location |
TCP_NODELAY
オプションの使用を有効または無効にします。このオプションは、接続がキープアライブ状態に移行したときに有効になります。さらに、SSL接続、非バッファリングプロキシ、およびWebSocketプロキシでも有効になります。
構文 |
tcp_nopush |
---|---|
デフォルト |
tcp_nopush off; |
コンテキスト |
http 、server 、location |
FreeBSDではTCP_NOPUSH
ソケットオプション、LinuxではTCP_CORK
ソケットオプションの使用を有効または無効にします。これらのオプションは、sendfileが使用されている場合にのみ有効になります。このオプションを有効にすると、
- LinuxとFreeBSD 4.*では、レスポンスヘッダーとファイルの先頭部分を1つのパケットで送信できます。
- ファイルをフルパケットで送信できます。
構文 |
try_files try_files |
---|---|
デフォルト | — |
コンテキスト |
server 、location |
指定された順序でファイルの存在を確認し、最初に検出されたファイルを使用してリクエスト処理を実行します。処理は現在のコンテキストで行われます。ファイルへのパスは、rootおよびaliasディレクティブに従ってfile
パラメーターから構築されます。名前の最後にスラッシュを指定することで、ディレクトリの存在を確認することもできます(例:「$uri/
」)。どのファイルも見つからなかった場合、最後のパラメーターで指定されたuri
への内部リダイレクトが行われます。例えば
location /images/ { try_files $uri /images/default.gif; } location = /images/default.gif { expires 30s; }
最後のパラメーターは、以下の例のように、名前付きロケーションを指すこともできます。バージョン0.7.51以降、最後のパラメーターはcode
にすることもできます。
location / { try_files $uri $uri/index.html $uri.html =404; }
Mongrelのプロキシングの例
location / { try_files /system/maintenance.html $uri $uri/index.html $uri.html @mongrel; } location @mongrel { proxy_pass http://mongrel; }
Drupal/FastCGIの例
location / { try_files $uri $uri/ @drupal; } location ~ \.php$ { try_files $uri @drupal; fastcgi_pass ...; fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param QUERY_STRING $args; ... other fastcgi_param's } location @drupal { fastcgi_pass ...; fastcgi_param SCRIPT_FILENAME /path/to/index.php; fastcgi_param SCRIPT_NAME /index.php; fastcgi_param QUERY_STRING q=$uri&$args; ... other fastcgi_param's }
次の例では、
location / { try_files $uri $uri/ @drupal; }
try_files
ディレクティブは次のものと同等です。
location / { error_page 404 = @drupal; log_not_found off; }
そしてここでは、
location ~ \.php$ { try_files $uri @drupal; fastcgi_pass ...; fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name; ... }
try_files
は、リクエストをFastCGIサーバーに渡す前にPHPファイルの存在を確認します。
WordpressとJoomlaの例
location / { try_files $uri $uri/ @wordpress; } location ~ \.php$ { try_files $uri @wordpress; fastcgi_pass ...; fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name; ... other fastcgi_param's } location @wordpress { fastcgi_pass ...; fastcgi_param SCRIPT_FILENAME /path/to/index.php; ... other fastcgi_param's }
構文 |
types { ... } |
---|---|
デフォルト |
types { text/html html; image/gif gif; image/jpeg jpg; } |
コンテキスト |
http 、server 、location |
ファイル名拡張子をレスポンスのMIMEタイプにマップします。拡張子は大文字と小文字を区別しません。複数の拡張子を1つのタイプにマップできます。例えば
types { application/octet-stream bin exe dll; application/octet-stream deb; application/octet-stream dmg; }
十分に完全なマッピングテーブルは、nginxのconf/mime.types
ファイルに配布されています。
特定のロケーションですべてのリクエストに対して「application/octet-stream
」MIMEタイプを出力するには、次の設定を使用できます。
location /download/ { types { } default_type application/octet-stream; }
構文 |
types_hash_bucket_size |
---|---|
デフォルト |
types_hash_bucket_size 64; |
コンテキスト |
http 、server 、location |
タイプハッシュテーブルのバケットサイズを設定します。ハッシュテーブルの設定に関する詳細は、別途用意されているドキュメントを参照してください。
バージョン1.5.13以前は、デフォルト値はプロセッサのキャッシュラインサイズによって異なっていました。
構文 |
types_hash_max_size |
---|---|
デフォルト |
types_hash_max_size 1024; |
コンテキスト |
http 、server 、location |
タイプハッシュテーブルの最大size
を設定します。ハッシュテーブルの設定に関する詳細は、別途用意されているドキュメントを参照してください。
構文 |
underscores_in_headers |
---|---|
デフォルト |
underscores_in_headers off; |
コンテキスト |
http 、server |
クライアントリクエストヘッダーフィールドでのアンダースコアの使用を有効または無効にします。アンダースコアの使用が無効になっている場合、アンダースコアを含む名前のリクエストヘッダーフィールドは無効としてマークされ、ignore_invalid_headersディレクティブの対象となります。
serverレベルでディレクティブが指定されている場合、デフォルトサーバーからの値を使用できます。詳細は、「仮想サーバーの選択」セクションに記載されています。
構文 |
variables_hash_bucket_size |
---|---|
デフォルト |
variables_hash_bucket_size 64; |
コンテキスト |
http |
変数ハッシュテーブルのバケットサイズを設定します。ハッシュテーブルの設定に関する詳細は、別途用意されているドキュメントを参照してください。
構文 |
variables_hash_max_size |
---|---|
デフォルト |
variables_hash_max_size 1024; |
コンテキスト |
http |
変数ハッシュテーブルの最大size
を設定します。ハッシュテーブルの設定に関する詳細は、別途用意されているドキュメントを参照してください。
バージョン1.5.13以前は、デフォルト値は512でした。
埋め込み変数
ngx_http_core_module
モジュールは、Apacheサーバー変数と一致する名前の埋め込み変数をサポートしています。まず第一に、これらはクライアントリクエストヘッダーフィールドを表す変数です(例:$http_user_agent
、$http_cookie
など)。他にも変数があります。
$arg_
name
- リクエスト行の引数
name
$args
- リクエスト行の引数
$binary_remote_addr
- バイナリ形式のクライアントアドレス。IPv4アドレスの場合は常に4バイト、IPv6アドレスの場合は常に16バイトです。
$body_bytes_sent
- レスポンスヘッダーを除く、クライアントに送信されたバイト数。この変数は、Apacheモジュールの
mod_log_config
の「%B
」パラメーターと互換性があります。 $bytes_sent
- クライアントに送信されたバイト数(1.3.8、1.2.5)
$connection
- 接続シリアル番号(1.3.8、1.2.5)
$connection_requests
- 接続を通じて行われたリクエストの現在の数(1.3.8、1.2.5)
$connection_time
- ミリ秒単位の精度での接続時間(秒単位)(1.19.10)
$content_length
- 「Content-Length」リクエストヘッダーフィールド
$content_type
- 「Content-Type」リクエストヘッダーフィールド
name
クッキー$document_root
- 現在のリクエストに対するrootまたはaliasディレクティブの値
$document_uri
$uri
と同じ$host
- 次の優先順位で:リクエスト行からのホスト名、または「Host」リクエストヘッダーフィールドからのホスト名、またはリクエストに一致するサーバー名
$hostname
- ホスト名
$http_
name
- 任意のリクエストヘッダーフィールド。変数名の最後の部分は、ダッシュをアンダースコアに置き換えて小文字に変換されたフィールド名です。
$https
- 接続がSSLモードで動作している場合は「
on
」、それ以外の場合は空文字列 $is_args
- リクエスト行に引数がある場合は「
?
」、それ以外の場合は空文字列 $limit_rate
- この変数を設定すると、レスポンスレート制限が有効になります。limit_rateを参照してください。
$msec
- ミリ秒単位の精度での現在の時刻(秒単位)(1.3.9、1.2.6)
$nginx_version
- nginxバージョン
$pid
- ワーカープロセスのPID
$pipe
- リクエストがパイプライン化された場合は「
p
」、それ以外の場合は「.
」(1.3.12、1.2.7) $proxy_protocol_addr
- PROXYプロトコルヘッダーからのクライアントアドレス(1.5.12)
listenディレクティブで
proxy_protocol
パラメーターを設定することで、事前にPROXYプロトコルを有効にする必要があります。 $proxy_protocol_port
- PROXYプロトコルヘッダーからのクライアントポート(1.11.0)
listenディレクティブで
proxy_protocol
パラメーターを設定することで、事前にPROXYプロトコルを有効にする必要があります。 $proxy_protocol_server_addr
- PROXYプロトコルヘッダーからのサーバーアドレス(1.17.6)
listenディレクティブで
proxy_protocol
パラメーターを設定することで、事前にPROXYプロトコルを有効にする必要があります。 $proxy_protocol_server_port
- PROXYプロトコルヘッダーからのサーバーポート(1.17.6)
listenディレクティブで
proxy_protocol
パラメーターを設定することで、事前にPROXYプロトコルを有効にする必要があります。 $proxy_protocol_tlv_
name
- PROXYプロトコルヘッダーからのTLV(1.23.2)。
name
はTLVタイプ名またはその数値にすることができます。後者の場合、値は16進数で、0x
を接頭辞として付ける必要があります。
SSL TLVにも、TLVタイプ名またはその数値(両方とも$proxy_protocol_tlv_alpn $proxy_protocol_tlv_0x01
ssl_
を接頭辞として付ける)でアクセスできます。$proxy_protocol_tlv_ssl_version $proxy_protocol_tlv_ssl_0x21
次のTLVタイプ名がサポートされています。
-
alpn
(0x01
) - 接続で使用される上位レイヤプロトコル -
authority
(0x02
) - クライアントによって渡されたホスト名値 -
unique_id
(0x05
) - 一意の接続ID -
netns
(0x30
) - 名前空間の名前 -
ssl
(0x20
) - バイナリSSL TLV構造
次のSSL TLVタイプ名がサポートされています。
-
ssl_version
(0x21
) - クライアント接続で使用されるSSLバージョン -
ssl_cn
(0x22
) - SSL証明書の共通名 -
ssl_cipher
(0x23
) - 使用された暗号の名前 -
ssl_sig_alg
(0x24
) - 証明書の署名に使用されたアルゴリズム -
ssl_key_alg
(0x25
) - 公開鍵アルゴリズム
また、次の特別なSSL TLVタイプ名がサポートされています。
-
ssl_verify
- クライアントSSL証明書の検証結果。クライアントが証明書を提示し、正常に検証された場合は0
、それ以外の場合は0以外。
listenディレクティブで
proxy_protocol
パラメーターを設定することで、事前にPROXYプロトコルを有効にする必要があります。 -
$query_string
$args
と同じ$realpath_root
- 現在のリクエストに対するrootまたはaliasディレクティブの値に対応する絶対パス名。すべてのシンボリックリンクは実際のパスに解決されます。
$remote_addr
- クライアントアドレス
$remote_port
- クライアントポート
$remote_user
- Basic認証で提供されたユーザー名
$request
- 完全な元のリクエスト行
$request_body
- リクエストボディ
この変数の値は、proxy_pass、fastcgi_pass、uwsgi_pass、scgi_passディレクティブによって処理されるロケーションで、リクエストボディがメモリバッファに読み込まれた場合に利用可能になります。
$request_body_file
- リクエストボディを含む一時ファイルの名前
処理の最後に、ファイルを削除する必要があります。リクエストボディを常にファイルに書き込むには、client_body_in_file_onlyを有効にする必要があります。プロキシされたリクエストまたはFastCGI/uwsgi/SCGIサーバーへのリクエストで一時ファイルの名前が渡される場合、 proxy_pass_request_body off、 fastcgi_pass_request_body off、 uwsgi_pass_request_body off、または scgi_pass_request_body offディレクティブによって、それぞれリクエストボディの受け渡しを無効にする必要があります。
$request_completion
- リクエストが完了した場合は「
OK
」、それ以外の場合は空文字列 $request_filename
- ルートまたはエイリアスディレクティブとリクエストURIに基づいた、現在のリクエストのファイルパス
$request_id
- 16バイトのランダムなバイトから生成された一意のリクエスト識別子(16進数)(1.11.0)
$request_length
- リクエストの長さ(リクエストライン、ヘッダー、リクエストボディを含む)(1.3.12、1.2.7)
$request_method
- リクエストメソッド、通常は「
GET
」または「POST
」 $request_time
- ミリ秒単位の精度を持つ秒単位のリクエスト処理時間(1.3.9、1.2.6)。クライアントから最初のバイトが読み取られてからの経過時間。
$request_uri
- 完全な元のリクエストURI(引数を含む)
$scheme
- リクエストスキーム、「
http
」または「https
」 $sent_http_
name
- 任意のレスポンスヘッダーフィールド。変数名の最後の部分は、ダッシュをアンダースコアに置き換えて小文字に変換されたフィールド名です。
$sent_trailer_
name
- レスポンスの最後に送信された任意のフィールド(1.13.2)。変数名の最後の部分は、ダッシュをアンダースコアに置き換えて小文字に変換されたフィールド名です。
$server_addr
- リクエストを受け入れたサーバーのアドレス
この変数の値を計算するには、通常、システムコールが1回必要です。システムコールを回避するには、listenディレクティブでアドレスを指定し、
bind
パラメーターを使用する必要があります。 $server_name
- リクエストを受け入れたサーバーの名前
$server_port
- リクエストを受け入れたサーバーのポート
$server_protocol
- リクエストプロトコル、通常は「
HTTP/1.0
」、「HTTP/1.1
」、「HTTP/2.0」、または「HTTP/3.0」 $status
- レスポンスステータス(1.3.2、1.2.2)
-
$tcpinfo_rtt
、$tcpinfo_rttvar
、$tcpinfo_snd_cwnd
、$tcpinfo_rcv_space
- クライアントTCP接続に関する情報。
TCP_INFO
ソケットオプションをサポートするシステムで使用できます。 $time_iso8601
- ISO 8601標準形式のローカル時間(1.3.12、1.2.7)
$time_local
- 共通ログ形式のローカル時間(1.3.12、1.2.7)
$uri
- リクエスト内の現在のURI、正規化済み
$uri
の値は、リクエスト処理中に変更される場合があります(例:内部リダイレクトを行う場合、またはインデックスファイルを使用する場合)。