nginx consists of modules which are controlled by directives specified in the configuration file.
http://nginx.org/en/docs/beginners_guide.html#conf_structureより引用
nginxの初心者ガイドに上記一文で定義されいているように、nginxはモジュールから構成されます。
設定ファイルにモジュール別のディレクティブを設定する事でnginxを制御します。
nginxはC言語で開発されています。C言語におけるモジュールとは、機能別に分割された関数を意味します。
巨大なソースをそれぞれ何かに特化した機能に分割されたプログララムの纏まりがモジュールといってよいでしょう。
nginxではモジュールの利用可否でモジュールに属するディレクティブの必要可否が決まります。
まずは、nginxのモジュールがどのようなものがあるかをざっくり見ていきましょう。
※.2017/06/02時点のhttp://nginx.org/en/docs/を起点とした情報を1次情報としています。
NGINX Plus 及び NGINXは、日進月歩開発されているので最新のモジュールの情報については、本家サイトを常にご確認お願い致します。
各モジュールに属する設定に入る前にnginxが提供しているOSS版のモジュールの一覧が以下になります。
nginxがどのモジュールで構成されているかは、nginx -t で確認して下さい。
補足:テーブルのカラム名をクリックするとソートされます。
2017年6月時点NGINX PLUSの開発は日々行われています。
NGINX Plus購入を決めている会社は特に気にする必要がありませんが、OSS版でロードバランサー(L7)、動画のストリーミング配信などの場合には、
「PLUSのみ」項目でソートし、どのような機能がOSS版ではできないのかマニュアルベースで事前に確認する必要があります。
名前 | 分類 | PLUSのみ | 概要 |
---|---|---|---|
ngx_http_core_module | http | webサーバーの主モジュール。 http、serverコンテキストなどwebに関係する主要な設定があります。 |
|
ngx_http_access_module | http | 特定のクライアントアドレスへのアクセスを制限します。 | |
ngx_http_addition_module | http | HTTPレスポンスの前後にテキストを追加するフィルター。 | |
ngx_http_auth_basic_module | http | HTTP基本認証プロトコルを使用してユーザー名とパスワードを検証することにより、リソースへのアクセスを制限します。 | |
ngx_http_auth_jwt_module | http | 〇 | JWT(Json Web Token)用モジュール。 JWT:JSONの送受信を安全に行うためJSONを暗号化した方式 |
ngx_http_auth_request_module | http | サブリクエストの結果に基づくクライアントの認証用モジュール。 | |
ngx_http_autoindex_module | http | スラッシュ文字( '/')で終わる要求を処理し、ディレクトリリストを生成します。 | |
ngx_http_browser_module | http | 値が "User-Agent"リクエストヘッダーフィールドの値に依存する変数を作成します。 | |
ngx_http_charset_module | http | 指定された文字セット(charset)を "Content-Type"レスポンスヘッダーフィールド に追加し、ある文字セットから別の文字セットに変換できます。 |
|
ngx_http_dav_module | http | WebDAVプロトコルによるファイル管理の自動化を行います。 | |
ngx_http_empty_gif_module | http | 単一ピクセル透明GIFを発行します。 | |
ngx_http_f4f_module | http | 〇 | サーバーサイドのHTTP Dynamic Streaming(HDS)用モジュール |
ngx_http_fastcgi_module | http | ※.1 | リクエストをFastCGIサーバーに渡します。 ※.1:商用のディレクティブ(purger、purger_files、purger_threshold、purger_sleep)があり。 |
ngx_http_flv_module | http | Flash Video(FLV)ファイルの疑似ストリーミング(サーバーサイド)のサポートします。 | |
ngx_http_geo_module | http | クライアントのIPアドレスに応じて値を持つ変数を作成します。 | |
ngx_http_geoip_module | http | プリコンパイルされたMaxMindデータベースを使用して、クライアントIPアドレスに応じた値を持つ変数を作成します。 | |
ngx_http_gunzip_module | http | "gzip"エンコーディング方式をサポートしていないクライアントのレスポンスを "Content-Encoding:gzip"で解凍するフィルタです。 | |
ngx_http_gzip_module | http | gzipメソッドを使用してレスポンスを圧縮し、送信データのサイズを半減させます。 | |
ngx_http_gzip_static_module | http | 通常のファイルの代わりにファイル名拡張子が.gzのプリコンパイルされたファイルを送信することができます。 | |
ngx_http_headers_module | http | ExpiresおよびCache-Controlヘッダーフィールドと任意のフィールドをレスポンスヘッダーに追加できます | |
ngx_http_hls_module | http | 〇 | MP4,MOVメディアファイルに対するサーバー側のHTTP Live Streaming(HLS)をサポートします。 |
ngx_http_image_filter_module | http | JPEG、GIF、PNG、WebP形式の画像を変換するフィルタです。 | |
ngx_http_index_module | http | スラッシュ文字( '/')で終わるリクエストを処理します。 | |
ngx_http_limit_conn_module | http | 定義されたキーごとの接続数、特に1つのIPアドレスからの接続数を制限します。 | |
ngx_http_limit_req_module | http | 定義されたキー、特に、単一のIPアドレスからの要求の処理速度に対する要求処理速度を制限します。 | |
ngx_http_log_module | http | 要求された形式でリクエストをログに書き込みます。 | |
ngx_http_map_module | http | 値が他の変数の値に依存する変数を作成します。 | |
ngx_http_memcached_module | http | memcachedサーバーからレスポンスを取得します。 | |
ngx_http_mp4_module | http | ※.2 | MP4ファイルに対する擬似ストリーミング(サーバサイド)をサポートします。 ※.2:1部ディレクティブ(mp4_limit_rate、mp4_limit_rate_after)が商用 |
ngx_http_perl_module | http | Perlでlocationと変数ハンドラを実装し、Perl呼び出しをSSIに挿入するために使用されます。 | |
ngx_http_proxy_module | http | ※.3 | リクエストを別のサーバーに渡します。 ※.3:1部ディレクティブ(proxy_cache_revalidate 、proxy cache use stale、)が商用 |
ngx_http_random_index_module | http | スラッシュ文字( '/')で終わるリクエストを処理し、インデックスファイルとして機能するディレクトリ内のランダムなファイルを選択します。 | |
ngx_http_realip_module | http | クライアントアドレスとオプションのポートを、指定されたヘッダフィールドで送信されたものに変更するために使用されます | |
ngx_http_referer_module | http | Refererヘッダーフィールドに無効な値を持つリクエストのサイトへのアクセスをブロックします。 | |
ngx_http_rewrite_module | http | PCRE正規表現、リターンリダイレクト、条件付き選択構成を使用してリクエストURIを変更するために使用されます。 | |
ngx_http_scgi_module | http | ※.4 | リクエストをSCGIサーバーに渡します。 ※.4:scgi_cache_purgeの一部機能が商用 |
ngx_http_secure_link_module | http | 要求されたリンクの信頼性をチェックし、不正アクセスからリソースを保護し、リンクの存続期間を制限するために使用されます | |
ngx_http_session_log_module | http | 〇 | セッションのログを記録します。 |
ngx_http_slice_module | http | リクエストをサブリクエストに分割するフィルタであり、それぞれが一定範囲のレスポンスを返します。 フィルタは、より大きな応答のより効果的なキャッシングを提供します。 |
|
ngx_http_split_clients_module | http | A / Bテストに適した変数を作成します。これは、スプリットテストとも呼ばれます。 | |
ngx_http_ssi_module | http | SSI(Server Side Includes)コマンドを通過するレスポンスを処理するフィルタです | |
ngx_http_ssl_module | http | HTTPSに必要なサポートを提供します。 | |
ngx_http_status_module | http | 〇 | さまざまなステータス情報へのアクセスを提供します。 |
ngx_http_stub_status_module | http | 基本的なステータス情報へのアクセスを提供します。 | |
ngx_http_sub_module | http | 特定の文字列を別の文字列に置き換えることによってレスポンスを変更するフィルタです。 | |
ngx_http_upstream_module | http | ※.5 | ハッシュロードバランシング方式を有効にします。
※5. upstream dyanamic機能が商用。max_conn,resolve,route,service,slow_start,zone, state,ntlm,least time,health check,match,queue,learnの1部が商用へ |
ngx_http_upstream_conf_module | http | 〇 | nginxを再起動する必要なく、簡単なHTTPインタフェースを使用してオンストリームのサーバーグループを構成できます。 |
ngx_http_userid_module | http | クライアントの識別に適したCookieを設定します。 | |
ngx_http_uwsgi_module | http | ※.6 | リクエストをuwsgiサーバーに渡します。 ※.6:uwsgi_cache_pathの1部パラメータが商用 |
ngx_http_v2_module | http | HTTP/2 のポートを提供します。 | |
ngx_http_xslt_module | http | 1つ以上のXSLTスタイルシートを使用してXMLレスポンスを変換するフィルタです。 | |
ngx_mail_core_module | メールの送受信を行う主モジュール。--with-mail設定パラメータで有効にする必要があります。 | ||
ngx_mail_auth_http_module | メールの認証処理用のモジュール | ||
ngx_mail_proxy_module | mailサービスのproxy機能用モジュール | ||
ngx_mail_ssl_module | メールプロキシサーバーがSSL / TLSプロトコルで動作するために必要なサポートを提供します。 | ||
ngx_mail_imap_module | IMAPクライアント用モジュール | ||
ngx_mail_pop3_module | POP3クライアント用モジュール | ||
ngx_mail_smtp_module | SMTPクライアント用モジュール | ||
ngx_stream_core_module | stream | ※.7 | 動画のストリーム配信の主要モジュール ※.7:resolver,resolver_timeoutのパラメータの一部が商用 |
ngx_stream_access_module | stream | 特定のクライアントからのアクセスを制限するモジュール | |
ngx_stream_geo_module | stream | クライアントIPアドレスに依存する値を持つ変数を作成します。 | |
ngx_stream_geoip_module | stream | プリコンパイルされたMaxMindデータベースを使用して、クライアントIPアドレスに依存する値を持つ変数を作成します。 | |
ngx_stream_limit_conn_module | stream | 定義されたキーごとの接続数、特に1つのIPアドレスからの接続数を制限します。 | |
ngx_stream_log_module | stream | ストリーム配信の接続ユーザのセッションログを記録します。 | |
ngx_stream_map_module | stream | 値が他の変数の値に依存する変数を作成します。 | |
ngx_stream_proxy_module | stream | TCP、UDP、およびUNIXドメインソケットを介してデータストリームをプロキシすることができます。 | |
ngx_stream_realip_module | stream | クライアントアドレスとポートをPROXYプロトコルヘッダで送信されたものに変更するために使用されます。 | |
ngx_stream_return_module | stream | 指定された値をクライアントに送信してから接続を閉じることができます。 | |
ngx_stream_split_clients_module | stream | スプリットテストとも呼ばれるA / Bテストに適した変数を作成します | |
ngx_stream_ssl_module | stream | ストリームプロキシサーバがSSL / TLSプロトコルで動作するために必要なサポートを提供します。 | |
ngx_stream_ssl_preread_module | stream | SSL / TLSを終了することなくClientHelloメッセージから情報を抽出することができます | |
ngx_stream_upstream_module | stream | ※.8 | proxy passディレクティブによって参照できるサーバのグループを定義するために使用されます。 ※.8:upstream dynamic,max_conns,resolve,service,slow_statかつ zone,least_time,udp,matchの一部,state,health_check_timeoutが商用 |
ngx_google_perftools_module | Google Performance Toolsを使用してnginxワーカープロセスのプロファイリングを有効にします。このモジュールは、nginx開発者を対象としています。 |