nginxのコア、フル、エクストラ、およびライトパッケージの違いは何ですか?


72

nginxUbuntuの公式リポジトリの5つのパッケージの1つによって提供される仮想パッケージです(少なくとも14.04の時点で、デフォルトはになっているnginx-coreと思います)。

$ apt-cache depends nginx | tail -n+2 | cut -d: -f 2 | sort -u
 nginx-core
 nginx-extras
 nginx-full
 nginx-light
 nginx-naxsi

これらのパッケージの違いは何ですか?また、推奨されるユースケースは何ですか?

このやや古いDebianのWikiページには、間の機能比較を持ちextrasfulllightnaxsi、しかし何も言及がで作られていませんcore。14.04でどの程度変更されましたか?


secondary 私が理解しているnginxように、Apacheのようにモジュールの実行時有効化をサポートしていません。したがって、インストールはnginx-extrasパフォーマンスに影響しますか


1
誰かが機能比較チャートのより新しいバージョンを行い、Googleドキュメント上でそれを共有しているようだ:docs.google.com/spreadsheet/...
スティーブン・K

1
@StevenKathは、その文書はDebianのみに基づいていることに注意してください。nginx-coreには触れず、naxsiフレーバーを削除するUnstableの変更は含まれていません(維持するのは簡単ではないため)。
トーマスウォード

回答:


99

Stevenの答えはキーポイントと各フレーバーが何であるかについての非常に基本的な要約に触れていますが、私はパッケージングにかなり取り組んでおり、それぞれが良い答えを得るために絶対に重要です。基本的な説明は、比較に対してあまり正義を行いません。(また、私の古いブログを引用してスティーブンを称賛します(そして、私を「メンテナー」と呼びさえします。私は新しいブログにnginx-is-coming-to-main投稿を移植するつもりでしたが、機会がありませんでした。 )

また、NGINX Webサーバーの最新パッケージは、ほぼ完全にDebianに基づいて、私が管理しているNGINX PPAで利用できることに注意してください。(安定したPPA(この投稿の時点で1.6.2); メインラインのPPA(この投稿の時点で1.7.7、2014年12月4日に着陸する予定の1.7.8))


異なるフレーバーnginx

異なるフレーバーはすべての同じバージョンですnginxが、フレーバーは異なる機能セット(for nginx-extras)を提供するためにDebianパッケージメンテナーによって決定されました。WebサーバーはWebサイトで使用される傾向があります。ある機能が別の機能よりも選択された正確な理由は私にはわかりませんが、IRCのDebianメンテナーの一人との補足的な議論で、各バリアントは別のユースケース- lightサイトホスティングの最小限の要件を満たす軽量な機能fullセット、より重い追加機能を含まないより完全な機能セット、およびextrasUbuntuに含めることができるパッケージに含まれるほとんどすべてのもの。 naxsi、15.04より前は、naxsiはかなりリソースを集中的に使用する可能性があるため、Naxsiバリアントは具体的には最小限のモジュールのみで構成されていました。

おそらく、私が現在ログを投稿できないプライベートな会話で、定期的にアップストリームNGINXと調整しているNGINXのDebianメンテナーの一人によると、NGINX 2.xはロード可能なモジュールをサポートする予定です。その場合には、lightfull、およびextras各モジュールを含む個々のパッケージを呼びメタパッケージとなるであろう。しかし、これが事実になる日付は不明であり、どのモジュールが実際にこれを行うことができるかは不明です。

現在のところ、nginx仮想パッケージは利用可能なバージョンの1つをインストールするように設計されています。デフォルトでnginx-coreは、メインにあるようnginx-coreに、仮想パッケージで最初に表示されインストールが試行されるのは、個人がより多く使用する場合に最適です。(ただし、nginxパッケージはのいずれかのフレーバーに依存することができnginx、主に特定のフレーバー設定を必要としない人にとってインストールを少し簡単にするためにあります)

各バリアントで使用可能な特定のモジュールの詳細な内訳(Vivid debian/controlファイルおよびTrusty debian/controlファイルに基づいて(Vividで Naxsiパッケージが削除されたため))は、以下で利用できます。 これはUbuntuの最新の変更を反映していないことに注意してください更新された正確な情報を確認するには、それらのパッケージの説明を参照する必要があります

  • nginx-core14.04の時点で、Ubuntuリポジトリのメインセクションにある唯一のフレーバーであり、Ubuntuリポジトリにのみ存在します(PPAやDebianには含まれず、Debianには含まれません)。実質的にnginx-fullフレーバーと同じですが、サードパーティのモジュールは含まれていません。使用の背後にある理由nginx-fullこのバリアントのベースは、サードパーティのモジュールを同時に排除しながら、ビルドされたバイナリに比較的本格的なコアモジュールのセットを提供することでした。そのため、セキュリティチームがコードをレビューし、サードパーティのモジュールには、nginx-tarball-includedほど適切にサポートされていないさまざまなコーディングスタイルがあることがわかったため、サードパーティのモジュールは含まれていません。モジュール(これは、メインインクルージョンリクエスト/レポートバグで詳細に説明されています。これには、ディスカッションポイントが含まれ、Ubuntu Mainに含まれる可能性のあるものに関するさらなるレビューディスカッションが含まれますnginx)。ここで有効になっているモジュールの完全なリストはパッケージの説明にあります。これについては、ここで詳しく説明しました。

    標準HTTPモジュール:コア、アクセス、認証基本、自動インデックス、ブラウザー、文字セット、空のGIF、FastCGI、Geo、Gzip、ヘッダー、インデックス、制限リクエスト、制限ゾーン、ログ、マップ、Memcached、プロキシ、リファラー、書き換え、SCGI 、分割クライアント、SSI、アップストリーム、ユーザーID、UWSGI。

    オプションのHTTPモジュール:追加、デバッグ、GeoIP、Gzip事前圧縮、HTTPサブ、画像フィルター、IPv6、実IP、Spdy、SSL、スタブステータス、置換、WebDAV、XSLT。

    メールモジュール:メールコア、IMAP、POP3、SMTP、SSL。

  • nginx-lightnginx利用できる最も軽い味です。これはユニバースリポジトリにあり、それを使用可能にする必要があります。-coreまたはで利用可能な大量のモジュールを有効にしません-full。また、サードパーティのモジュールも含まれています。使用可能なモジュールは次のとおりです。

    標準HTTPモジュール:コア、アクセス、認証基本、自動インデックス、文字セット、空GIF、FastCGI、Gzip、ヘッダー、インデックス、ログ、マップ、プロキシ、書き換え、アップストリーム。

    オプションのHTTPモジュール:認証要求、デバッグ、Gzip事前圧縮、IPv6、リアルIP、SSL、スタブステータス。

    サードパーティモジュール:エコー。

  • nginx-full機能が豊富なnginxパッケージのフレーバーの1つです。light対応するものと同様に、Universeリポジトリにあります。from-nginxソースtarballの標準およびオプションのコアインクルードモジュールのほとんどと、nginx Webサーバーの機能を拡張するために設計されたいくつかのサードパーティモジュールを有効にします。モジュールは次のとおりです。

    標準HTTPモジュール:コア、アクセス、認証基本、自動インデックス、ブラウザー、文字セット、空のGIF、FastCGI、Geo、Gzip、ヘッダー、インデックス、制限リクエスト、制限ゾーン、ログ、マップ、Memcached、プロキシ、リファラー、書き換え、SCGI 、分割クライアント、SSI、アップストリーム、ユーザーID、UWSGI。

    オプションのHTTPモジュール:追加、認証要求、デバッグ、GeoIP、Gzip事前圧縮、HTTPサブ、画像フィルター、IPv6、実IP、Spdy、SSL、スタブステータス、置換、WebDAV、XSLT。

    メールモジュール:メールコア、IMAP、POP3、SMTP、SSL。

    サードパーティモジュール:認証PAM、DAV Ext、エコー、HTTP置換フィルター、アップストリームフェアキュー。

  • nginx-extrasnginxパッケージの最も機能豊富なフレーバーです。そして、そのようにfullし、light兄弟、それはあまりにも宇宙のリポジトリです。すべてのモジュールを有効にしますnginx-fullが、追加モジュール(Perlモジュールなど)、さらにnginx Webサーバーの機能をさらに拡張するために設計された多くのサードパーティモジュールも含まれます。その完全なモジュールリストは以下のとおりです。

    標準HTTPモジュール:コア、アクセス、認証基本、自動インデックス、ブラウザー、文字セット、空のGIF、FastCGI、Geo、Gzip、ヘッダー、インデックス、制限リクエスト、制限ゾーン、ログ、マップ、Memcached、プロキシ、リファラー、書き換え、SCGI 、分割クライアント、SSI、アップストリーム、ユーザーID、UWSGI。

    オプションのHTTPモジュール:追加、認証要求、デバッグ、埋め込みPerl、FLV、GeoIP、Gzip事前圧縮、画像フィルター、IPv6、MP4、ランダムインデックス、リアルIP、セキュアリンク、Spdy、SSL、スタブステータス、置換、WebDAV、XSLT。

    メールモジュール:メールコア、IMAP、POP3、SMTP、SSL。

    サードパーティモジュール:認証PAM、Chunkin、DAV Ext、エコー、埋め込みLua、ファンシーインデックス、HttpHeadersMore、HTTP置換フィルター、httpプッシュ、Nginx開発キット、アップロードの進行状況、アップストリームフェアキュー。

  • nginx-naxsiNaxsi Web Application Firewallモジュールが利用可能なnginxのバリアントです。これもユニバースにありますが、このフレーバーはDebianメンテナーによってサポートされなくなり、15.04リリースでUbuntuから完全に削除されます。 Naxsi WAFモジュールに加えて、それはよりもはるかに軽いモジュールのセットも含んでいますnginx-full。モジュールの完全なリストは以下のとおりです。

    標準HTTPモジュール:コア、アクセス、認証基本、自動インデックス、ブラウザー、文字セット、コア、空のGIF、FastCGI、Geo、Gzip、ヘッダー、インデックス、制限リクエスト、制限ゾーン、ログ、マップ、Memcached、プロキシ、リファラー、書き換え、スプリットクライアント、SSI、アップストリーム、ユーザーID。

    オプションのHTTPモジュール:デバッグ、IPv6、実IP、SSL、スタブステータス。

    サードパーティモジュール:Naxsi、キャッシュパージ、アップストリームフェア。


フレーバー間のリソース使用量

のさまざまなフレーバーで実行されたベンチマークを認識していませんがnginx、使用するバージョンの機能が有効にnginxなればなるほど、より多くのリソースが使用されると考えるのが一般的です。

ただし、より多くのモジュールが有効になっているメモリホールのようなものになる可能性のあるApacheとは異なりnginx、モジュールが有効になっている場合、Apacheと比較してそれほど多くのメモリを消費しません。(このステートメントの例外はnaxsiフレーバーです。このフレーバーは、WebアプリケーションファイアウォールおよびWebサーバーであるため、常により多くのリソースを消費します。)

見つけた場合はこの回答にベンチマークを追加しますが、繰り返しますが、さまざまなフレーバーの既存のベンチマークを互いに認識していません。そして、私は実行するサイトが大量のトラフィックを持っていないにもかかわらず、私は間の任意の実際のパフォーマンスの低下を気づいていないnginx-extrasnginx-fullまたはnginx-lightPHP駆動型のサイト上で。


確かに標準的です。この質問は、error.logインストールした後にこの行を見たときに始まりましたnginx-extra[info] 19936#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf。RSSではなく共有されていますが、それでも私は不思議に思いました。したがって、パフォーマンスは疑われますが、それは二次的なものです。
ムル14

2
@muru pushモジュールは、共有メモリを適切に使用することでよく知られています。私の知る限り(これについては少し間違っているかもしれませんが)、その共有メモリは、プッシュモジュールが使用される可能性のあるWebサーバー上のすべてのサイトで使用されます。ただし、そのモジュールはサードパーティのモジュールであるため、実際の問題はメンテナーに向けてください:)
トーマスウォード

1
いや、問題ありません。PPAの新しいバージョンは入っていbackportsますか?そして、それらはおそらく同じソースから構築されているため、セキュリティチームによって適用されたパッチもとでnginx-core利用可能に-fullなり-extraますか?
ムル14

3
@muru残念ながら、PPAのバージョンのパッケージ化はUbuntuとは別に行われます。現在、パッケージを古いリリースにバックポートすることは非常に困難です。Debianの変更をUbuntuの変更にマージする必要がないため、最終的にPPAで行われます。Main Inclusion以来、私はバックポートを調査していません。古いリリースで利用可能なものと一致するためにドロップしなければならない多くの変更があるからです。(およびnaxsiパッケージのドロップにより、15.04バージョンのバックポートが不可能になりました)。
トーマスウォード

2
@muruそして、はい、14.04以降でセキュリティ更新プログラム(または標準リリース更新プログラム)として適用されたパッチは、すべて同じコードベースに基づいているため、そのリポジトリnginx-corenginx利用可能な他のフレーバーに適用されます。./configure異なるモジュールを有効または無効にするための行が異なるだけです。
トーマスウォード

14

主にパッケージの説明に基づいた、非常に高度な評価です。(それぞれのユースケースの例を提供することはできませんが、好奇心を満たすためにこれを十分に理解したので、私もそれを貢献できます。)

最小から最大へ:

nginx-light:「基本バージョン」

基本機能用の最小限のモジュールセット。

nginx-naxsi: "naxsiのバージョン"

最小限のセットに加えて、強化された「Nginx Anti Xss&Sql Injection」構成とその必要なプラグイン。

nginx-core: "コアバージョン"

標準のnginx展開で、サードパーティのモジュールは少ない。

これは、Canonicalでサポートされる最初のnginxパッケージです。コミュニティがサポートする「ユニバース」リポジトリではなく、Ubuntuの「メイン」リポジトリにあります。「nginx-coreは現在Ubuntu Trusty 14.04メインにあります」というアナウンスをご覧ください。上のメンテナの(古いと今は亡き)非公式ブログのアーカイブまたは上のメンテナの非公式ブログ上の古い記事のコピー

すでに確立されているnginxのフレーバーはどれもUbuntu Mainに含まれていません(nginx-light、nginx-full、nginx-extras、nginx-naxsi)。Ubuntuセキュリティチームは、サードパーティのモジュールはコーディングが大きく異なるため、サポートできないと述べています。

そのために、メインリポジトリに含まれているnginx-coreというパッケージを作成しました。このパッケージには、nginx tarballとともに出荷されるモジュールのみが含まれています。このパッケージにはサードパーティのモジュールは含まれていません。NGINXアップストリームから提供されているモジュールのみが含まれています。

nginx-full:「標準バージョン」

頻繁に使用されるサードパーティモジュールを含む、標準のnginx展開。

nginx-extras:「拡張バージョン」

標準のnginx展開と、使用頻度の低いいくつかのモジュールがあります。


1
一つのこと:私が理解しているnginxように、Apacheのようにモジュールの有効化をサポートしていないので、インストールnginx-extrasはパフォーマンスに影響を与えるでしょうか?
ムル14

1
naxsiは、-naxsiおよび-extrasにのみ含まれ、-coreまたは-fullには含まれません。-extrasを使用すると、おそらくパフォーマンスに影響があります。確かに、より軽量なパッケージよりも多くのメモリが消費されます。
スティーブンK 14

2
これは古くなっています。これについては、nginxパッケージに関して多くの影響力があるため、より完全なステートメントを投稿します。
トーマスウォード

1
@ThomasW。うわー、あなたが「メンテナンスのブログ」から上で引用した男じゃないですか?
スティーブンK 14

1
@StevenKath Yeppers、そしてその答えについても触れました。Wordpressはフレームワークの邪悪な部分であるため、以前のブログをオフラインにする必要がありましたが、それでもポイントは残っています。私はUbuntuの「公式メンテナー」とは程遠いですが、おそらくパッケージのほとんどのメンテナンスを行い、おそらく「非公式メンテナー」と見なされます。
トーマスウォード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.