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では、AIOはFreeBSD 4.3から利用することができます。FreeBSD 11.0以前は、AIOはカーネルに静的にリンクすることができます:
options VFS_AIO
あるいは、カーネルのロード可能なモジュールとして動的にロードすることもできます:
kldload aio
Linuxでは、AIOはカーネルバージョン 2.6.22から使うことができます。また、directioを有効にすることが必要で、そうでなければ読み込みはブロッキングされるでしょう:
location /video/ { aio on; directio 512; output_buffers 1 128k; }
Linuxでは、directio は512バイト(あるいはXFSの場合は4K)の境界に並んだブロックを読み込むためのみに使うことができます。並んでいないファイルはブロッキングモードで読み込まれます。バイト範囲のリクエストとファイルの先頭からではないFLVリクエストにも当てはまります: ファイルの先頭と終了での並んでいないデータの読み込みはブロッキングされるでしょう。
LinuxにおいてAIO と sendfile の両方が有効な場合は、AIOが directio ディレクティブで指定されているサイズ以上のファイルに使われますが、サイズ未満のファイルあるいはdirectioが無効な場合はsendfile が使われます。
location /video/ { sendfile on; aio on; directio 8m; }
結果的に、ファイルはマルチスレッディング(1.7.11)を使ってワーカープロセスのブロック無しに読み込みおよびsentすることができます:
location /video/ { sendfile on; aio threads; }
指定されたpoolのスレッドへの読み込みおよびsend fileオペレーションは仕事からはずされます。poolの名前が省略された場合は、"default
"という名前のpoolが使用されます。pool名は変数を使って設定することもできます:
aio threads=pool$disk;
デフォルトでは、マルチスレッディングは無効で、--with-threads
configuration パラメータを使って有効にされる必要があります。現在のところ、マルチスレッディングは epoll, kqueue および eventport メソッドとのみ互換性があります。マルチスレッド化されたファイルのsendはLinuxのみでサポートされます。
sendfile ディレクティブも見てください。
構文: |
aio_write |
---|---|
デフォルト: |
aio_write off; |
コンテキスト: |
http , server , location |
このディレクティブはバージョン 1.9.13 から導入されました。
aio が有効にされると、ファイルの書き込みのためにそれが使われるかどうかを指定します。現在のところ、これはaio スレッド
を使う場合にのみ動作し、プロキシされたサーバから受け取ったデータの一時ファイル書き込みに制限されます。
構文: |
alias |
---|---|
デフォルト: | - |
コンテキスト: |
場所 |
指定されたlocationの置き換えを定義します。例えば、次の設定の場合
location /i/ { alias /data/w3/images/; }
"/i/top.gif
"のリクエストに、/data/w3/images/top.gif
ファイルが送られるでしょう。
path
の値には、$document_root
と$realpath_root
を除いた変数を含めることができます。
alias
が正規表現で定義されたlocationの中で使われる場合、そのような正規表現は取り出しを含む必要があり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ではchunked transfer encodingを無効にすることができます。標準的な要求にも関わらずchunked encoding をサポートしないソフトウェアを使う場合には便利です。
構文: |
client_body_buffer_size |
---|---|
デフォルト: |
client_body_buffer_size 8k|16k; |
コンテキスト: |
http , server , location |
クライアントのリクエストボディを読むためのバッファサイズを設定します。リクエストボディがバッファより大きい場合には、ボディ全体または一部だけがtemporary fileに書き込まれます。デフォルトでは、バッファサイズは二つのメモリページです。これは、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 |
クライアントリクエストボディの読み込みのタイムアウトを定義します。タイムアウトは二つの連続する読み込み操作の期間についてセットされ、リクエストボディ全体を転送する時間ではありません。クライアントがこの期間に何も転送しなかった場合は、リクエストは408(Request Time-out)エラーを使って中断されます。
構文: |
client_header_buffer_size |
---|---|
デフォルト: |
client_header_buffer_size 1k; |
コンテキスト: |
http , server |
クライアントのリクエストヘッダを読み込むバッファサイズを設定します。ほとんどのリクエストの場合、1Kバイトのバッファで十分です。しかしながら、リクエストに長いクッキーが含まれるか、WAPクライアントからの場合、1Kでは合わないでしょう。リクエスト行またはリクエストヘッダフィールドがこのバッファに合わない場合、large_client_header_buffers ディレクティブで指定されるより大きなバッファが割り当てられます。
ディレクティブがserverレベルで指定された場合、デフォルトサーバの値を使うことができます。詳細は“Virtual server selection”の章で提供されます。
構文: |
client_header_timeout |
---|---|
デフォルト: |
client_header_timeout 60s; |
コンテキスト: |
http , server |
クライアントのリクエストヘッダの読み込みのタイムアウトを定義します。クライアントがこの期間にヘッダ全体を転送しなかった場合は、リクエストは408(Request Time-out)エラーを使って中断されます。
構文: |
client_max_body_size |
---|---|
デフォルト: |
client_max_body_size 1m; |
コンテキスト: |
http , server , location |
クライアントリクエストボディの最大許容サイズを設定します。リクエストのサイズが設定された値を超えると、413(Request Entity Too Large)エラーがクライアントに返されます。ブラウザがこのエラーを正しく表示できないことを承知してください。size
を0に設定すると、クライアントのリクエストボディサイズのチェックが無効になります。
構文: |
connection_pool_size |
---|---|
デフォルト: |
connection_pool_size 256|512; |
コンテキスト: |
http , server |
接続あたりのメモリの割り当ての正確なチューニングができます。このディレクティブはパフォーマンスへの効果が最小のため、一般的に使われるべきではありません。 デフォルトでは、32-bitプラットフォーム上ではサイズは256バイトに等しく、64-bitプラットフォーム上では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.5)巨大なファイルを提供する場合:
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
は処理のオーバーヘッドが追加されます。
検索のためだけにディレクトリをオープンするのをサポートしないシステム上では、これらのパラメータを使うためにworkerプロセスはチェックする全てのディレクトリの読み込みパーミッションを持つ必要があります。
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
” および “HEAD
”以外の全てのメソッドについて)クライアントのリクエストのメソッドを“GET
”に変更して指定されたuri
に内部的にリダイレクトします。
更に、"=
response
"構文を使って、応答コードを違うものに変更することができます。例えば:
taerror_page 404 =200 /empty.gif;
プロキシされているサーバあるいはFastCGI/uwsgi/SCGI/gRPC サーバによってエラー応答が処理される場合で、サーバが異なる応答コード(例えば、200,302,401または404)を返すかも知れない場合、それが返すコードを使って応答することができます:
error_page 404 = /404.php;
内部的なリダイレクトの間にURIとメソッドを変更する必要が無い場合は、名前のついたlocationにエラー処理を渡すことができます。
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)のどれか一つだけに変更することができます。
コード 307はバージョン1.1.16と1.0.13までリダイレクトとして扱われませんでした。
コード 308 はバージョン 1.13.0までリダイレクトとして扱われませんでした。
これらのディレクティブは、現在のレベルに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
- "If-Modified-Since" リクエストヘッダフィールドは無視されます(0.7.34);
exact
- 正確に一致させます;
before
- れすぽいんすの修正時間が"If-Modified-Since"リクエストヘッダフィールドの時間より早いか等しい
構文: |
ignore_invalid_headers |
---|---|
デフォルト: |
ignore_invalid_headers on; |
コンテキスト: |
http , server |
無効な名前のヘッダフィールドを無視すべきかどうかを制御します。有効な名前は、英語の文字、数字、ハイフォン、ひょっとしたらアンダースコア(underscores_in_headersディレクティブで制御されます)の組み合わせでできています。
ディレクティブがserverレベルで指定された場合、デフォルトサーバの値を使うことができます。詳細は“Virtual server selection”の章で提供されます。
構文: |
internal; |
---|---|
デフォルト: | - |
コンテキスト: |
場所 |
与えられたlocationが内部リクエストだけに使われることを指定します。外部リクエストにはクライアントエラー 404 (Not Found) が返されます。内部リクエストとは以下のようなものです:
- error_page, index, random_index と try_files ディレクティブでリダイレクトされたリクエスト
- upstreamサーバからの"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エラー (Internal Server Errror)が返されます。そのような場合、エラーログに"rewrite or internal redirection cycle" メッセージが現れます。
構文: |
keepalive_disable |
---|---|
デフォルト: |
keepalive_disable msie6; |
コンテキスト: |
http , server , location |
ブラウザの無作法な振る舞いによるkeep-alive接続を無効にします。browser
パラメータはどのブラウザが影響を受けるかを指定します。値のmsie6
は MSIEの古いバージョンでPOSTリクエストを受け付けた時にkeep-alive接続を無効にします。値のsafari
は macOS と macOS-like オペレーティングシステムの SafariやSafari-likeブラウザでkeep-alive接続を無効にします。値のnone
は全てのブラウザでkeep-alive接続を有効にします。
1.1.18以上では、safari
は全てのオペレーティングシステムにおいて全てのSafari とSafari-like ブラウザが該当し、それらとのkeep-alive接続はデフォルトで無効になりました
構文: |
keepalive_requests |
---|---|
デフォルト: |
keepalive_requests 1000; |
コンテキスト: |
http , server , location |
このディレクティブはバージョン0.8.0から導入されました。
一つのkeep-alive接続で提供できるリクエストの最大数を設定します。最大数に達した後は接続が閉じられます。
接続ごとのメモリの割り当てを解放するには、接続を定期的に閉じる必要があります。したがって、リクエストの最大数が多すぎると、メモリが過剰に使われることになり、お勧めしません。
Prior to version 1.19.10, the default value was 100.
構文: |
keepalive_time |
---|---|
デフォルト: |
keepalive_time 1h; |
コンテキスト: |
http , server , location |
このディレクティブはバージョン1.19.10から導入されました。
1つのkeep-alive接続でリクエストを処理できる最大時間を制限します。この時間に達すると、後続のリクエスト処理に続いて接続が閉じられます。
構文: |
keepalive_timeout
|
---|---|
デフォルト: |
keepalive_timeout 75s; |
コンテキスト: |
http , server , location |
1つめのパラメータはサーバ側で開かれたままになるkeep-aliveクライアントコネクションのタイムアウトを設定します。0の値はkeep-alive接続を無効にします。任意の二つ目のパラメータは"Keep-Alive: timeout=time
" 応答ヘッダフィールドの値を設定します。二つの値は異なるかも知れません。
"Keep-Alive: timeout=time
" ヘッダーフィールドはMozillaとKonquerorで認識されます。MSIEはkeep-alive接続を自分自身で約60秒で閉じます。
構文: |
large_client_header_buffers |
---|---|
デフォルト: |
large_client_header_buffers 4 8k; |
コンテキスト: |
http , server |
大きなクライアントリクエストヘッダを読み込むのに使われるバッファのnumber
とsize
の最大値を設定します。リクエストの行は一つのバッファのサイズを超過することはできません。そうでなければ 414 (Request-URI Too Large) エラーがクライアントに返されるでしょう。 client. リクエストヘッダフィールドも同様に一つのバッファサイズを越えることができません。そうでなければ 404 (Bad Request)エラーがクライアントに返されるでしょう。バッファは必要な時だけ割り当てられます。デフォルトではバッファサイズは8Kバイトです。リクエストの処理が終わると、接続はKeep-alive状態に移行し、これらのバッファは解放されます。
ディレクティブがserverレベルで指定された場合、デフォルトサーバの値を使うことができます。詳細は“Virtual server selection”の章で提供されます。
構文: |
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の値はレートの制限を無効にします。制限はリクエストごとに設定されます。もしクライアントが同時に二つの接続を開いた場合は、全体のレートは指定された制限の二倍になるでしょう。
パラメータの値には変数を含めることができます (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
"はそれ以上のデータを待たずに直ちに接続を閉じるように指示します。この挙動はプロトコルに違反するものであり、通常の状況では使うべきものではありません。
HTTP/2接続のクローズを制御するには、ディレクティブをserverレベル(1.19.1)で指定する必要があります。
構文: |
lingering_time |
---|---|
デフォルト: |
lingering_time 30s; |
コンテキスト: |
http , server , location |
lingering_close の効果がある場合には、このディレクティブはクライアントからの追加のデータを処理(読み込んで無視する)する間の最大時間を指定します。その後、更にデータがあったとしても接続は閉じられるでしょう。
構文: |
lingering_timeout |
---|---|
デフォルト: |
lingering_timeout 5s; |
コンテキスト: |
http , server , location |
lingering_close の効果がある場合には、このディレクティブはクライアントのデータの到着を待つ最大時間を指定します。データがこの時間内に到着しない場合は、接続が閉じられるでしょう。そうでなければ、データは読み込まれて破棄され、nginxは再び更なるデータを待ち始めます。"wait-read-ignore" サイクルは繰り返されますが、lingering_timeディレクティブで指定されるより長くはありません。
構文: |
listen
listen
listen
|
---|---|
デフォルト: |
listen *:80 | *:8000; |
コンテキスト: |
server |
サーバがリクエストを受け付ける、IPに対してはaddress
と port
、あるいはUNIX-domainソケットに対してはpath
。address
とport
の両方、あるいはaddress
だけ、あるいはport
だけを指定することができます。address
はhostnameからも知れません。例えば:
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-domain ソケット (0.8.21) は"unix:
"プリフィックスで指定されます:
listen unix:/var/run/nginx.sock;
address
だけが渡された場合、ポート80が使われます。
ディレクティブが存在しない場合は、もしスーパーユーザ権限で実行されていれば*:80
を、そうでなければ*:8000
が使われます。
default_server
パラメータがある場合は、指定されたaddress
:port
ペアについてデフォルトのサーバになるでしょう。どのディレクティブにもdefault_server
パラメータが無い場合は、address
:port
ペアがある最初のサーバがこのペアについてのデフォルトのサーバになるでしょう。
バージョン0.8.21からこのパラメータは簡潔にdefault
という名前になりました。
ssl
パラメータ (0.7.14)は、このポートで受け付ける全ての接続がSSLモードで動作しなければならないことを指定することができます。HTTPとHTTPSリクエストの両方を扱うサーバのために、もっとコンパクトな設定をすることができます。
http2
パラメータ (1.9.5) は HTTP/2 接続を受け付けるポートを設定します。通常これが動作するにはssl
パラメータも指定される必要がありますが、nginxはSSL無しのHTTP/2接続を受け付けるように設定することもできます。
spdy
パラメータ(1.3.15-1.9.4)は、このポートのSPDY接続の受付をすることができます。通常これが動作するにはssl
パラメータも指定される必要がありますが、nginxはSSL無しのSPDY接続を受け付けるように設定することもできます。
proxy_protocol
パラメータ(1.5.12)は、このポートの全ての接続の受付がPROXY protocolを使わなければならないように指定することができます。
PROXY プロトコル バージョン 2はバージョン 1.13.11 からサポートされます。
listen
ディレクティブはソケットに関するシステムコールに特有の幾つかの追加パラメータを指定することができます。このパラメータはどのlisten
ディレクティブでも指定することができますが、 渡されたaddress
:port
ペアは一度だけ指定することができます。
バージョン0.8.21から、default
と一緒にlisten
ディレクティブの中でだけ指定できるようになりました。
-
setfib
=number
-
このパラメータ(0.8.44) はlistenソケットのための関連ルーティングテーブル、FIB(
SO_SETFIB
オプション)を設定します。これは今のところFreeBSDでだけ動作します。 -
fastopen
=number
-
listenソケットのための"TCP Fast Open"を有効にし、3ウェイハンドシェイクがまだ完了していない接続のキューの最大の長さを制限します。
サーバが same SYN packet with dataの受信を1回以上処理できない場合には、この機能を有効にしないでください。
-
backlog
=number
-
ペンディング接続のキューのための最大長を制限している
listen()
コールの中でbacklog
パラメータを設定します。デフォルトでは、backlog
はFreeBSD、DragonFly BSD および macOS では -1、その他のプラットフォームでは511に設定されています。 -
rcvbuf
=size
-
listenソケットのための受信バッファサイズ(
SO_RCVBUF
オプション)を設定します。 -
sndbuf
=size
-
listenソケットのための送信バッファサイズ(
SO_SNDBUF
オプション)を設定します。 -
accept_filter
=filter
-
やってくる接続を
accept()
に渡す前にフィルタをするlistenソケットのために、受信フィルタ(SO_ACCEPTFILTER
オプション)の名前を設定します。これはFreeBSDとNetBSD 5.0+でだけ動作します。可能な値はdataready と httpreadyです。 -
繰り延べ
-
LInuxでの繰り延べ
accept()
(TCP_DEFER_ACCEPT
ソケットオプション)について説明します。 -
bind
-
指定された
address
:port
ペアに個別のbind()
コールをします。もしポートが同じでアドレスが違うlisten
ディレクティブが幾つかあり、そのlisten
ディレクティブの一つが指定された指定されたポートで全てのアドレス(*:
port
)でlistenする場合、nginxは*:
port
にbind()
するため、これは有用です。この場合接続を受け付けるためのアドレスを決定するために、getsockname()
システムコールがされることに注意しなければなりません。If thesetfib
,fastopen
,backlog
,rcvbuf
,sndbuf
,accept_filter
,deferred
,ipv6only
,reuseport
, orso_keepalive
parameters are used then for a givenaddress
:port
pair a separatebind()
call will always be made. -
ipv6only
=on
|off
-
このパラメータ(0.7.42)は(
IPV6_V6ONLY
ソケットオプションを経由して)、ワイルドカードアドレス[::]
でlistenしている IPv6ソケットがIPv6接続だけを受け付けるかIPv6とIPv4接続の両方を受け付けるかどうかを決定します。このパラメータはデフォルトでonです。開始時に一度だけ設定することができます。バージョン1.3.4から、もしこのパラメータが省略された場合、オペレーティングシステムの設定がそのソケットに対して有効になります。
-
reuseport
-
このパラメータ(1.9.1)は、カーネルがワーカープロセス間の着信接続を分散できるようにして、ワーカープロセスごとに個別のlistenソケットを再生するように指示します(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)はlistenソケットの"TCP keepalive"の挙動を設定します。パラメータが省略されると、オペレーティングシステムの設定がそのソケットに対して有効になります。値が"
on
"に設定されると、SO_KEEPALIVE
オプションがそのソケットに対してonになります。値が"off
"に設定されると、SO_KEEPALIVE
オプションがそのソケットに対してoffになります。幾つかのオペレーティングシステムではTCP_KEEPIDLE
,TCP_KEEPINTVL
とTCP_KEEPCNT
ソケットオプションを使ってソケットごとのTCP keepaliveパラメータの設定をサポートしています。そのようなシステム(現在のところ、Linux 2.4+, NetBSD 5+ と FreeBSD 9.0-STABLE)では、keepidle
,keepintvl
とkeepcnt
パラメータを使って設定することができます。対応するソケットのオプションにシステムのデフォルトの設定が効果を持つ場合に、一つ以上のパラメータが省略されるかも知れません。例えば:
アイドルタイムアウト(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 |
リクエストURLに応じて設定を設定します。
"%XX
"形式にエンコードされたテキストがデコードされ、相対パスコンポーネント".
"と"..
"の参照が解決され、二つ以上の隣接したスラッシュが一つのスラッシュに圧縮された後に、正規化されたURIに対してマッチングが実行されます。
locationはプリフィック文字または正規表現のどちらかで定義されるでしょう。正規表現は先行する"~*
"修飾子(大文字小文字を区別しないマッチング)、または"~
"修飾子(大文字小文字を区別するマッチング)によって指定されます。指定されたリクエストに合致するlocationを見つけるために、nginxはまずプリフィックス文字列(プリフィックスlocation)を使って定義されるlcoationを調べます。それらの中で、一番長くマッチするプリフィックスのlocationが選択され記憶されます。それから、設定ファイルの中に現れる順番で正規表現が調べられます。正規表現の検索は一番最初にマッチした時点で終了し、対応する設定が使われます。正規表現にマッチするのものが無かった場合、前に記憶されたプリフィックスlocationの設定が使われます。
下記に言及する幾つかの例外と共にlocation
ブロックは入れ子にすることができます。
macOS と Cygwinのような大文字小文字の区別が無いオペレーティングシステムでは、プリフィックス文字のマッチングは大文字小文字を区別しません(0.7.7)。しかし、比較は一バイトごとに限られます。
正規表現はキャプチャ(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を含むことができません。
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 |
not found fileのエラーをerror_logに記録することを有効化または無効化します。
構文: |
log_subrequest |
---|---|
デフォルト: |
log_subrequest off; |
コンテキスト: |
http , server , location |
サブリクエストをaccess_logに記録することを有効化または無効化します。
構文: |
max_ranges |
---|---|
デフォルト: | - |
コンテキスト: |
http , server , location |
このディレクティブはバージョン1.1.2から導入されました。
バイトレンジ リクエストの最大レンジの数字を制限します。たとえ指定されたバイトレンジが無いとしても制限を越えるリクエストが処理されます。デフォルトではレンジの数は制限されません。値0はバイトレンジ サポートを完全に無効にします。
構文: |
merge_slashes |
---|---|
デフォルト: |
merge_slashes on; |
コンテキスト: |
http , server |
URIの隣接する二つ以上のスラッシュの一つのスラッシュへの圧縮を有効または無効にします。
圧縮はlocationのプリフィックス文字列と正規表現の正しいマッチングに不可欠なものであることに注意してください。それ無しでは"//scripts/one.php
"リクエストはマッチしないでしょう。
location /scripts/ { ... }
静的なファイルとして処理されるかも知れません。そして"/scripts/one.php
"に変換されます。
圧縮のoff
はURIがbase64-encoded名を含む場合に必要になるかも知れません。というのもbase64は"/
"文字を内部的に使うからです。しかし、セキュリティの考慮のため、圧縮のoffは避けたほうが良いです。
ディレクティブがserverレベルで指定された場合、デフォルトサーバの値を使うことができます。詳細は“Virtual server selection”の章で提供されます。
構文: |
msie_padding |
---|---|
デフォルト: |
msie_padding on; |
コンテキスト: |
http , server , location |
応答サイズを512バイトに増やすために、400以上のステータスのMSIEクライアントへの応答にコメントを追加することを有効または無効にする。
構文: |
msie_refresh |
---|---|
デフォルト: |
msie_refresh off; |
コンテキスト: |
http , server , location |
MSIEクライアントのためにリダイレクトの代わりにリフレッシュを起こすことを有効または無効にする。
構文: |
open_file_cache open_file_cache
|
---|---|
デフォルト: |
open_file_cache off; |
コンテキスト: |
http , server , location |
保持に使うキャッシュを設定する:
- 指定されたサイズと修正時間で、ファイルディスクリプタを開く;
- 存在するディレクトリの情報;
-
"file not found", "no read permission"などのファイル ルックアップのエラー。
エラーのキャッシュはopen_file_cache_errorsディレクティブによって別個に有効にされる必要があります。
ディレクティブは次のパラメータを持ちます:
-
max
- キャッシュ内の要素の最大数を設定する; キャッシュのオーバーフロー時には最も使われいない(LRU)要素が削除されます。
-
inactive
- 指定の期間アクセスされていないエレメントがキャッシュから削除される期間を定義します; デフォルトでは 60秒です。
-
off
- disables the cache.
例:
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以前はデフォルト値は 132kでした。
構文: |
port_in_redirect |
---|---|
デフォルト: |
port_in_redirect on; |
コンテキスト: |
http , server , location |
nginxが発行する絶対的なリダイレクトでポートの指定を有効または無効にします。
リダイレクト時の最初のサーバ名の使用は server_name_in_redirect ディレクティブによって制御されます。
構文: |
postpone_output |
---|---|
デフォルト: |
postpone_output 1460; |
コンテキスト: |
http , server , location |
可能であればクライアントのデータの転送はnginxが送信するデータを少なくとも size
バイト持つまで延期されるでしょう。値0はデータ転送の延期を無効にします。
構文: |
read_ahead |
---|---|
デフォルト: |
read_ahead 0; |
コンテキスト: |
http , server , location |
ファイルを扱う時のカーネルのプリロードの量を設定します。
Linuxでは posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL)
システムコールが使われるため、c1>sizeパラメータは無視されます。
FreeBSDでは、fcntl(O_READAHEAD,
size
)
システムコール、FreeBSD 9.0-CURRENTからさポートされています、が使われます。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.5.2)を使った閉じた接続の再設定を、有効または無効にします。再設定は次のように実行されます。ソケットを閉じる前に、SO_LINGER
オプションがタイムアウトアウト値0で設定されます。ソケットが閉じられた時に、TCP_RSTがクライアントに送られ、このソケットに占有されていた全てのメモリが解放されます。これにより、既に閉じられたソケットが長い間FIN_WAIT1ステートでバッファを占有することを避けることができます。
タイムアウトしたkeep-alive接続は正常に閉じられることに注意が必要です。
構文: |
resolver
|
---|---|
デフォルト: | - |
コンテキスト: |
http , server , location |
upstreamサーバの名前をアドレス解決するために使われるネームサーバを設定します。例えば:
resolver 127.0.0.1 [::1]:5353;
アドレスはドメイン名またはIPアドレス、オプションとしてポートが指定可能です(1.3.1, 1.2.2)。ポートが指定された場合は、ポート53が使われるでしょう。ラウンドロビンの形式で、ネームサーバが照合されます。
バージョン1.1.7より前では、一つのネームサーバだけが設定することができました。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; }
ファイル/data/w3/i/top.gif
が"c1>/i/top.gif"リクエストの応答に送信されるでしょう。
path
の値には、$document_root
と$realpath_root
を除いた変数を含めることができます。
ファイルへのパスは単にroot
ディレクティブの値にURIを加することで組み立てられます。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
)あるいは少なくとも一つ(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 |
もしこのディレクティブがゼロ以外の値に設定された場合、kqueueメソッドのNOTE_LOWAT
またはSO_SNDLOWAT
ソケットオプションのどちらかを使って、クライアントソケットの送信オペレーションの数を最小化しようとします。どちらの場合も指定した値size
が使われます。
このディレクティブはLinux、Solaris、Windowsでは無視されます。
構文: |
send_timeout |
---|---|
デフォルト: |
send_timeout 60s; |
コンテキスト: |
http , server , location |
クライアントに応答する転送タイムアウトを設定します。タイムアウトは二つの連続する書き込み操作の間に設定され、応答全体の転送のためのものではありません。この時間内にクライアントが何も受け取らなかった場合、接続が閉じられます。
構文: |
sendfile |
---|---|
デフォルト: |
sendfile off; |
コンテキスト: |
http , server , location , if in location |
sendfile()
の使用を有効または無効にします。
nginx 0.8.12とFreeBSD 5.2.1から、aioをsendfile()
のためにpre-loadするために使うことができます:
location /video/ { sendfile on; tcp_nopush on; aio on; }
この設定では、sendfile()
はSF_NODISKIO
フラグ付きで呼び出され、disk I/Oをブロックしません。しかし代わりにデータがメモリに無いというレポートが返ります。nginxはその後 1バイト読み込むことで非同期データのロードを開始します。最初の読み込みでFreeBSDのカーネルはファイルの最初の128Kバイトをメモリにロードしますが、次の読み込みは16Kチャンクのみロードするでしょう。これは read_ahead ディレクティブを使って変更することができます。
バージョン1.7.11以前は、pre-loadは aio sendfile;
を使って有効にすることができました。
構文: |
sendfile_max_chunk |
---|---|
デフォルト: |
sendfile_max_chunk 2m; |
コンテキスト: |
http , server , location |
Limits the amount of data that can be transferred in a single sendfile()
call. 制限が無い場合、一つの高速な接続がworkerプロセスを完全に掴むかもしれません。
Prior to version 1.21.4, by default there was no limit.
構文: |
server { ... } |
---|---|
デフォルト: | - |
コンテキスト: |
http |
バーチャルサーバの設定をします。IPベース(IPアドレスに基づく)と名前ベース("Host"リクエストヘッダフィールドに基づく)バーチャルサーバとの間に明確な違いはありません。代わりに、listenディレクティブがサーバが受け付ける接続の全てのアドレスとポートを示し、server_nameディレクティブが全てのサーバ名を列挙します。設定例が"How nginx processes a request"ドキュメントで提供されています。
構文: |
server_name |
---|---|
デフォルト: |
server_name ""; |
コンテキスト: |
server |
バーチャルサーバの名前を設定します。例えば:
server { server_name example.com www.example.com; }
最初の名前がprimaryサーバ名になります。
サーバ名には、名前の最初または最後の部分を置き換えるアスタリスク("*
") を含むことができます。:
server { server_name example.com *.example.com www.example.*; }
そのような名前はワイルドカード名と呼ばれます。
前述の名前の最初の二つは一つに結合することができます:
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 namesドキュメントで提供されています。
構文: |
server_name_in_redirect |
---|---|
デフォルト: |
server_name_in_redirect off; |
コンテキスト: |
http , server , location |
nginxが発行するabsoluteリダイレクトで、server_name ディレクティブで指定されるプライマリサーバ名の使用を有効または無効にします。primary サーバ名の利用が無効の場合、"Host"リウエストヘッダフィールドの名前が使われます。このフィールドが無い場合、サーバのIPアドレスが使われます。
リダイレクトのポートの利用はport_in_redirect ディレクティブで制御されます。
構文: |
server_names_hash_bucket_size |
---|---|
デフォルト: |
server_names_hash_bucket_size 32|64|128; |
コンテキスト: |
http |
サーバ名ハッシュテーブルのbucketサイズを設定します。デフォルトの値はプロセッサのキャッシュラインのサイズに依存します。ハッシュテーブルの設定の詳細は別個のドキュメントで提供されています。
構文: |
server_names_hash_max_size |
---|---|
デフォルト: |
server_names_hash_max_size 512; |
コンテキスト: |
http |
サーバ名ハッシュテーブルのsize
の最大値を設定します。ハッシュテーブルの設定の詳細は別個の<a0>ドキュメント</a0>で提供されています。
構文: |
server_tokens
|
---|---|
デフォルト: |
server_tokens on; |
コンテキスト: |
http , server , location |
エラーページと"Server"応答ヘッダフィールドの中でnginxのバージョンを発行することを有効または無効にします。
build
パラメータ (1.11.10) はnginxのバージョンと一緒に ビルド名の発行を有効にします。
更に、commercial subscriptionの一部として、バージョン 1.9.13 からエラーページと “Server” 応答ヘッダフィールドの値の中のシグネチャーは明示的に変数とともに string
を使って設定することができます。空の文字列は “Server” フィールドの送出を無効にします。
構文: |
subrequest_output_buffer_size |
---|---|
デフォルト: |
subrequest_output_buffer_size 4k|8k; |
コンテキスト: |
http , server , location |
このディレクティブはbーアジョン1.13.10で導入されました。
サブリクエストの応答ボディを格納するために使われるバッファのサイズ
を設定します。デフォルトでは、バッファサイズはメモリページと同じサイズです。これは4Kあるいは8kです。プラットフォームに依存します。しかしながら、もっと小さくすることができます。
ディレクティブはメモリ内に保存された応答ボディを持つサブリクエストのみに適用可能です。例えば、SSIによって生成されたサブリクエストのようなもの。
構文: |
tcp_nodelay |
---|---|
デフォルト: |
tcp_nodelay on; |
コンテキスト: |
http , server , location |
TCP_NODELAY
オプションの利用を有効または無効にします。オプションは接続がkeep-alive状態に移行する時に有効にされます。更に、バッファされないプロキシとWebSocketプロキシについては、SSL接続上で有効にされます。
構文: |
tcp_nopush |
---|---|
デフォルト: |
tcp_nopush off; |
コンテキスト: |
http , server , location |
FreeBSDでのTCP_NOPUSH
ソケットオプションあるいはLinuxでのTCP_CORK
ソケットオプションを有効または無効にします。sendfile が使われる時のみオプションが有効にされます。オプションを有効にすることにより、
- LinuxとFreeBSD 4.*では応答ヘッダの送信とファイルの開始を一つのパケットですることができます:
- 一杯になったパケットでファイルを送ることができます。
構文: |
try_files try_files |
---|---|
デフォルト: | - |
コンテキスト: |
server , location |
ファイルの存在を指定した順番で調べ、最初に見つけたファイルをリクエストの処理に使います; 処理は現在のコンテキストで実行されます。ファイルのパスは root and alias ディレクティブにしたあってfile
パラメータから構築されます。名前の最後にスラッシュを指定することで、ディレクトリのチェックをすることができます。例えば "$uri/
"。ファイルが見つからなかった場合には、最後のパラメータで指定されるuri
へ内部的にリダイレクトします。例えば:
location /images/ { try_files $uri /images/default.gif; } location = /images/default.gif { expires 30s; }
下の例で示すように最後のパラメータが名前付きのlocationを示すようにもできます。バージョン 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; }
And here,
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タイプにマップする。拡張子は大文字小文字を区別しません。幾つかの拡張子は一つのタイプにマップされます。例えば:
types { application/octet-stream bin exe dll; application/octet-stream deb; application/octet-stream dmg; }
nginxではconf/mime.types
ファイルに十分に徹底したマッピングテーブルが配布されています。
特定のlocationで全てのリクエストに対しapplication/octet-stream
"MIMEタイプを発行するには、次の設定が使われます:
location /download/ { types { } default_type application/octet-stream; }
構文: |
types_hash_bucket_size |
---|---|
デフォルト: |
types_hash_bucket_size 64; |
コンテキスト: |
http , server , location |
タイプのハッシュテーブルのためのbucketサイズを設定します。ハッシュテーブルの設定の詳細は別個のドキュメントで提供されています。
1.5.13以前では、デフォルト値はプロセッサーのキャッシュラインのサイズに依存していました。
構文: |
types_hash_max_size |
---|---|
デフォルト: |
types_hash_max_size 1024; |
コンテキスト: |
http , server , location |
タイプのハッシュテーブルのsize
の最大値を設定します。 ハッシュテーブルの設定の詳細は別個の<a0>ドキュメント</a0>で提供されています。
構文: |
underscores_in_headers |
---|---|
デフォルト: |
underscores_in_headers off; |
コンテキスト: |
http , server |
クライアントリクエストの中でアンダースコアの利用を有効または無効にします。アンダースコアの利用を無効にすると、アンダースコアを含むリクエストヘッダーフィールドは無効とマークされ、ignore_invalid_headersディレクティブの影響を受けるようになります。
ディレクティブがserverレベルで指定された場合、デフォルトサーバの値を使うことができます。詳細は“Virtual server selection”の章で提供されます。
構文: |
variables_hash_bucket_size |
---|---|
デフォルト: |
variables_hash_bucket_size 64; |
コンテキスト: |
http |
変数ハッシュテーブルのbucketサイズを設定します。ハッシュテーブルの設定の詳細は別個のドキュメントで提供されています。
構文: |
variables_hash_max_size |
---|---|
デフォルト: |
variables_hash_max_size 1024; |
コンテキスト: |
http |
変数ハッシュテーブルの最大size
を設定します。ハッシュテーブルの設定の詳細は別個の<a0>ドキュメント</a0>で提供されています。
バージョン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
-
応答ヘッダを含まないクライアントへ送信されるバイト数; この値は
mod_log_config
Apacheモジュールの"%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
- connection time in seconds with a milliseconds resolution (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
- workerプロセスのPID
$pipe
-
リクエストがパイプラインされている場合は"
p
"、そうでなければ".
"(1.3.12, 1.2.7) $proxy_protocol_addr
-
PROXYプロトコルヘッダからのクライアントアドレス(1.5.12)
PROXYプロトコルはlistenディレクティブの
proxy_protocol
パラメータの設定によって前もって有効にされていなければなりません。 $proxy_protocol_port
-
RPOXYプロトコルヘッダからのクライアントポート(1.11.0)
PROXYプロトコルはlistenディレクティブの
proxy_protocol
パラメータの設定によって前もって有効にされていなければなりません。 $proxy_protocol_server_addr
-
PROXYプロトコルヘッダからのサーバアドレス(1.17.6)
PROXYプロトコルはlistenディレクティブの
proxy_protocol
パラメータの設定によって前もって有効にされていなければなりません。 $proxy_protocol_server_port
-
PROXYプロトコルヘッダからのサーバポート(1.17.6)
PROXYプロトコルはlistenディレクティブの
proxy_protocol
パラメータの設定によって前もって有効にされていなければなりません。 $query_string
-
$args
と同じ $realpath_root
- 現在のリクエストの<c0>root または alias ディレクティブの値に対応する絶対パス; 全てのシンボリックリンクが実際のパスに解決されたもの
$remote_addr
- クライアントのアドレス
$remote_port
- クライアントのポート
$remote_user
- Basic認証で提供されたユーザ名
$request
- 完全なオリジナルリクエスト行
$request_body
-
リクエストボディ
リクエストボディがメモリ バッファから読み込まれる場合は、proxy_pass, fastcgi_pass, uwsgi_passと scgi_pass ディレクティブで処理された変数の値はlocationの中で利用可能です。
$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
- 現在のリクエストのファイルパスは、root または aliasディレクティブと、リクエストの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
-
リクエストを受け付けたサーバのアドレス
この変数の値の計算は、通常一回のシステムコールを要求します。システムコールを避けるには、listen ディレクティブはアドレスで指定して
bind
パラメータを使う必要があります。 $server_name
- リクエストを受け付けたサーバの名前
$server_port
- リクエストを受け付けたサーバのポート
$server_protocol
-
リクエストプロトコル、通常"
HTTP/1.0
"、"HTTP/1.1
"あるいは"HTTP/2.0" 状態
- 応答ステータス (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
- Common Log フォーマットのローカルタイム (1.3.12, 1.2.7)
$uri
-
リクエスト中の現在のURI、正規化されたもの
$uri
の値はリクエスト処理の間で変わるかも知れません。例えば内部リダイレクトをする時またはindexファイルを使う時。