Nginxのディレクティブ一覧
最近インフラの記事ばかり書いていますが、興味あるし、楽しいからやっています。 プログラマで、インフラからアプリ開発までする方もいるの知っていますが、珍しいんでしょうか。
Nginxの設定
Nginxのインストールを終えているので、設定周りを進めていきたいですが、 Nginxの書籍についても手に入れているので、こちらのディレクティブについて軽くまとめておきます。
設定ファイルのフォーマット
<section> <directive> <parameter>; </section>
全てではありませんが、セクションをいくつか上げていきたいと思います。
セクションの一覧
グローバルセクション
- user
- ワーカプロセスを実行するユーザー名とグループ名が設定される。グループ名が省略された場合、グループ名はユーザ名と同一と
みなされる
- ワーカプロセスを実行するユーザー名とグループ名が設定される。グループ名が省略された場合、グループ名はユーザ名と同一と
- worker_processes
- 起動されるワーカプロセス(worker process)数を示す。ワーカプロセスかクライアントからのコネクションすべてを処理する。
- error_log
- pid
- これはメインプロセスのプロセスIDが書き込まれるファイルを示す。コンパイル時のデフォルト値を上書きする
- use
- worker_connections
- このディレクティブはワーカプロセスが同時にオープン可能なコネクションの最大数を設定する。
インクルードファイルの利用
HTTPサーバセクション
Nginxのビルドの際にHTTPモジュールを無効化(--without-http)しない限り利用できます。 私は、yumからインストールしているので利用可能です。
クライアントディレクティブ
- chunked_transfer_encoding
- クライアントへのレスポンスの際に、HTTP/1.1標準のチャンク転送エンコードを無効にする
- client_body_buffer_size
- クライアントからのリクエストボディを読み取る際のバッファサイズを指定する。デフォルトはページサイズの2倍。リクエストボディが これを超える場合はテンポラリファイルに書き込まれる。
- client_body_in_file_only
- 本ディレクティブにより、Nginxはクライアントからのリクエストボディに追加の処理を行う場合に用いる。本ディレクティブをonにする。 本ディレクティブをonにすることで、クライアントからのリクエストボディが強制的にファイルに保存される。
- client_body_in_single_buffer
- 本ディレクティブにより、Nginxはクライアントからのリクエストボディ全体を強制的に単一のバッフォに保存するため、コピー操作が提言される
- client_body_temp_path
- クライアントからのリクエストボディを保存するパスを設定する
- client_body_timeout
- クライアントからのリクエストボディを読み取る際のタイムアウト値を指定する
- client_header_buffer_size
- クライアントからのリクエストヘッダのバッファサイズ。デフォルトの1KBを超えるサイズが必要となった際に設定する
- client_max_body_size
- クライアントからのリクエストボディの最大長。これを超えた場合、413(Request Entiry Too Large)エラーがブラウザに返却される
- keepalive_disable
- ブラウザからのキープアライブリクエストを無効にする
- keepalive_requests
- 単一のキープアライブコネクションからクローズされるまでに発行可能なリクエスト数を指定する
- large_client_header_buffers
- クライアントからのリクエストヘッダの最大数と最大サイズを指定する
- msie_padding
- Internet Explore(MSIE)クライアントが400以上のステータスでレスポンスを返却する際に、レスポンスのサイズを512バイト以上 にするためにコメントを追加する機能を有効にする
- msie_refresh
- MSIEクライアントに対して、リダイレクトを送信する代わりにリフレッシュを送信する機構を有効にする
ファイルI/Oディレクティブ
aio
- 非同期ファイルI/Oの使用を有効にする。これは、最近のFreeBSDおよびLinuxディストリビューションのすべてで利用できる。FreeBSDの場合、 aioはsendfuke用のデータをあらかじめロードしておくために用いられることがある。Linuxの場合directioも有効にする必要があるため、 sendfileが自動的に無効となる。
directio
- パラメータで指定されたサイズより大きいファイルを配信する際に、OS固有のフラグや関数を有効にする。これはLinuxでaioを用いる際に 必須である。
directio_alignment
- directioで用いるアラインメントを設定する。デフォルオ値の512で通常は十分だが、LinuxでXFSを用いる際は、この値を4Kに増やしておく ことを推奨する
open_file_cache
- オープン中のファイルディスクリプタ、ディレクトリ検索結果、ファイル検索結果のエラーを格納するキャッシュを設定する
open_file_cache_errors
- open_file_cacheによるファイル検索ケッアエラーのキャッシュを有効にする
open_file_cache_min_uses
- ファイルディスクリプタをオープンしたままキャッシュ内に保持し続ける上で、open_file_cacheのinactiveパラメータで指定 された時間内に最低何回の使用を必要とするかを設定する。
open_file_cache_valid
- open_file_cache内のエントリの有効性をチェックする時間感覚を設定する
postpone_output
- Nginxがクライアントに送信するデータの最小サイズを指定する。他の要因がなければ、この値を超えるまではいかなるデータも 送信されない
read_ahead
sendfile
sendfile_max_chunk
- ワーカプロセスが待機してしまうことを避けるため、1回のsendfile(2) 呼び出しでコピー可能なデータの最大サイズを指定する
ハッシュディレクティブ
server_names_hash_bucket_size
- server_nameハッシュテーブルを保持するエントリのサイズを指定する
server_names_hash_max_size
- server_nameハッシュテーブルの最大エントリ数を指定する
types_hash_bucket_size
- typesハッシュテーブルの最大エントリ雛を指定する
variables_hash_bucket_size
- その他のへんs縫うを保持するエントリ野サイズを指定する
variables_hash_maz_size
- その他の変数の保持するハッシュテーブルの最大エントリ数を指定する
ソケットディレクティブ
lingering_close
- クライアントからのコネクションをクローズする際に、追加で送信されたデータへの対応を制御する
lingering_time
- 本ディレクティブは、lingering_closeディレクティブが有効になっているコネクションで、通過で送信されたデータを処理するために コネクションをオープンしておく時間を指定する
ligering_timeout
- 本ディレクティブも、lingering_closeと組み合わせる事で、Nginxがコネクションをクローズする前に、追加されたデータを待ち受ける時間を 指定する
reset_timedout_connection
- 本ディレクティブが有効な場合、タイム会うとしたコネクションは即座にリセットされ、関連するメモリがすべて開放される。デフォルトでは、 ソケットがFIN_WAIT1の状態のまま残る。キープアライブコネクションは、常にデフォルトの動作を行う
send_lowat
send_timeout
- 書き込み処理に対するクライアントからのレスポンスのタイムアウト値を設定する
tcp_nodelay
- キープアライブコネクションに対するTCP_NODELAYオプションの有効化、無効化を制御する
tcp_nopush
- sendfileを使っている場合のみ有効である。有効かすることで、可能な限り最大サイズのパケットを用いてファイルを送信する といった動作を試行するようにする
仮想サーバセクション
default_server
- リクエストがデフォルトで処理されるaddress:portのペアを定義する
setfib
- 待ち受けているソケットにFIBを設定する
backlog
- listen()のbacklogパラメータを指定する
rcvbuf
- 待ち受けているソケットにSO_RCVBUFパラメータを設定する
sndbuf
- 待ち受けているソケットにSO_SNDBUFパラメータを設定する
accept_filter
- accept_filter名としてdatareadyもしくはhttoreadyを設定する
deferred
- 遅延accept()を用いるためにTCP_DEFER_ACCEPTオプションを設定する
bind
- addres:portのベアに対して個別にbind()を行う
ipv6only
- IPV6_V6ONLYパラメータの値を指定する
-
- このポートではHTTPSのコネクション以外実行しないことを示す
so_keepalive
- 待ち受けているソケットに対して、TCPキープアライブを設定する
ロケーション
alias
- ファイルシステム参照の際に用いるロケーションの別名を定義する。ロケーションが正規表現で定義されている場合、aliasにはその正規表現 で定義されたキャプチャが含まれている必要がある。aliasにはその正規表現で定義されたキャプチャが含まれている必要がある。 aliasは、ロケーションにマッチした部分のURIを置き換える。言い換えると、URIのうちマッチしなかった部分はそのままファイルシステム上の パスの参照に用いられる。aliasディレクティブを用いると、設定まわりを少し変更しただけでも動作に影響がでてしまうため、ファイルを参照する ためにURIを修正する必要がなければ、rootディレクティブの利用が推奨される
internal
- 内部リクエスト(リライト(rewrite) リクエスト、エラーページなどのディレクティブで定義されたリダイレクト)以外から利用できないロケー ションであることを宣言する
limit_except
- ロケーション内で利用できるHTTPメソッド(GETにはHEADも含まれる)を制限する
メールサーバセクション
- こちらは利用する予定がないので省きます。
以上です。