NGINXとは? ~多様な用途に活用できるソフトウェアWebサーバ~
<目次>
目次[非表示]
- 1.はじめに
- 2.NGINXとは?
- 3.NGINX OSS vs NGINX Plus
- 4.NGINXの多様な利用用途
- 5.おわりに
はじめに
本ブログをご覧の皆様は「NGINX」をご存じでしょうか?
「どこかで見たことはあるけど、どう読むのかわからない」「聞いたことはあるけど、使ったことがない」など、これから「NGINX」を知りたいという方に向けて、本ブログで「NGINX」とは何なのかをご紹介できればと思います。
NGINXとは?
「NGINX」は「エンジンエックス」と発音し、Webサーバ、リバースプロキシ、キャッシュ、ロードバランシングなど多くの機能を保有するソフトウェアです。
「NGINX」は、イゴール・シソーエフ(Igor Sysoev)氏によって、2002年に開発が開始され、2004年にオープンソースとしてリリースされました。継続的な開発を見据えて、2011年にNGINX, Inc.が設立され、2013年に商用版として「NGINX Plus」がリリースされています。商用版の「NGINX Plus」に対して、オープンソース版を「NGINX OSS」と記載します。そして、2019年にNGINX, Inc.はF5に買収され、現在はF5製品として幅広く知られています。
「NGINX」の開発当時、多くのシェアを占めていた既存Webサーバは、C10K問題(※)に直面していました。
(※)クライアントが1万を越えるとパフォーマンスが劣化する事象
この問題を解決するため、イベント駆動型の非同期アーキテクチャを採用し、大量の同時接続が発生する環境においても、高いパフォーマンスと安定性を目指し、設計されています。そのため、高トラフィックを処理する必要のあるWebサイトで多く利用されています。
NGINX OSS vs NGINX Plus
オープンソース版の「NGINX OSS」と商用版の「NGINX Plus」において、ベースとなるアーキテクチャは同じであり、どちらを活用いただいても、高いパフォーマンスと安定性をもったWebサイトを実現することができます。
ただし、「NGINX OSS」と「NGINX Plus」には、以下表のような違いがあります。
▼Webサーバ/リバースプロキシ
機能 |
NGINX OSS |
NGINX Plus |
静的コンテンツのWebサーバ |
〇 |
〇 |
リバースプロキシ |
〇 |
〇 |
HTTP/2のサポート |
〇 |
〇 |
HTTP/3のサポート |
〇 |
〇 |
▼ロードバランサー
機能 |
NGINX OSS |
NGINX Plus |
HTTP/TCP/UDPのサポート |
〇 |
〇 |
L7リクエストルーティング |
〇 |
〇 |
ロードバランシングアルゴリズム |
※ |
〇 |
セッションパーシステンスメソッド |
※ |
〇 |
アクティブヘルスチェック |
✕ |
〇 |
DNSサービスディスカバリー |
✕ |
〇 |
※ロードバランシングアルゴリズム、セッションパーシステンスメソッドについては、NGINX OSSでも利用は可能です。NGINX Plusのみ利用可能なアルゴリズム、メソッドがあります。
▼コンテンツキャッシュ
機能 |
NGINX OSS |
NGINX Plus |
静的/動的コンテンツキャッシュ |
〇 |
〇 |
キャッシュパージAPI |
✕ |
〇 |
▼セキュリティ
機能 |
NGINX OSS |
NGINX Plus |
IPアドレス制限 |
〇 |
〇 |
HTTP Basic認証 |
〇 |
〇 |
JWT認証 |
✕ |
〇 |
レート制限 |
〇 |
〇 |
TLS 1.3のサポート |
〇 |
〇 |
OpenID Connect SSO |
✕ |
〇 |
WAF(NGINX App Protect) |
✕ |
〇 |
▼モニタリング
機能 |
NGINX OSS |
NGINX Plus |
ダッシュボード |
✕ |
〇 |
外部監視ツールへのエクスポート |
〇 |
〇 |
▼高可用性(HA)
機能 |
NGINX OSS |
NGINX Plus |
アクティブ-パッシブモード |
✕ |
〇 |
アクティブ-アクティブモード |
✕ |
〇 |
設定の同期 |
✕ |
〇 |
セッションパーシステンスなど状態の共有 |
✕ |
〇 |
▼サポート
機能 |
NGINX OSS |
NGINX Plus |
メーカーサポート(英語) |
〇 |
〇 |
テクマトリックスサポート(日本語) |
〇 |
〇 |
「NGINX OSS」と「NGINX Plus」の差異については以下サイトにも記載がございますので、こちらもご参照ください。
「NGINXとNGINX Plusの機能比較」
「この機能の違いについて詳細が知りたい」などございましたら、以下サイトより、お気軽に弊社までお問い合わせいただければと思います。
「テクマトリックス NGINX紹介ページ」
また、各機能の詳細については、今後のブログにて紹介していければと思っています。
NGINXの多様な利用用途
「NGINX」について、多くの機能を保有するソフトウェアと紹介しました。ここでは「NGINX」を活用できる用途の一例を、ご紹介できればと思います。
- Webサーバ
「NGINX」自体を、静的コンテンツを保持するWebサーバとして利用することができます。先に説明したアーキテクチャを採用したことにより、「NGINX」は、高いパフォーマンスと安定性をWebサイトに提供します。また追加モジュールを利用することで、動的コンテンツを提供するWebサイトも構築することができるようになっています。一例として、NGINX JavaScript(NJS)というモジュールが挙げられます。NJSを利用すると、NGINXのトラフィック処理にJavaScriptを組み込むことができます。
- リバースプロキシ
高いパフォーマンスと安定性という特徴がある「NGINX」をリバースプロキシとして活用することにより、高速で確実なコンテンツの提供を実現することができます。また「NGINX」にてWebアクセラレーションを機能させることにより、レスポンスを生成しクライアントへ返すまでの時間を短縮させることも可能です。例えば、サーバのレスポンスを圧縮することで、必要な帯域幅を減らし、ネットワークでの転送を高速化します。SSLターミネーションもWebアクセラレーションの手法の1つで、HTTPSを利用した通信の復号処理をリバースプロキシである「NGINX」で行わせることで、Application Serverの消費リソースの軽減を見込むことができます。
- ロードバランサー
「NGINX」をロードバランサーとして利用することも可能です。リバースプロキシとして動作する「NGINX」がリクエストを転送するオリジナルのコンテンツを保持するサーバが複数台ある場合に、「NGINX」がロードバランサーとしてトラフィックの分散を行います。分散の手法は、「順番に分散(Round Robin)」「最小接続数のサーバに分散(Least Connection)」「クライアントIPアドレスにより分散(IP Hash)」などから選択することが可能です。そのため、Webサイトに最適な負荷分散手法を選択することができます。またCookieの値などをもとに、セッションパーシステンス(セッション維持)を行うこともできます。
- コンテンツキャッシュ
リバースプロキシ/ロードバランサーとして「NGINX」を利用した場合に、「NGINX」のリクエスト転送先であるサーバからのレスポンスデータを「NGINX」にてキャッシュすることができます。この機能を利用することで、アクセスが多いコンテンツについては、オリジナルのコンテンツを保持するサーバへのリクエストを都度行うことなく、「NGINX」がキャッシュしたコンテンツをサイト利用者に返すことでWebサイトの高速化やオリジナルのコンテンツを保持するサーバの負荷軽減を図ることが可能です
- APIゲートウェイ
「NGINX」はAPIゲートウェイとして必要な機能を兼ね備えています。APIゲートウェイとは、APIを呼び出すクライアントと、呼び出されたAPIに対して結果を返すバックエンドサーバの間に位置し、トラフィック保護と転送を行います。APIゲートウェイとして必要な機能として、Pathベースのルーティングや、コネクション数・レートリミット・帯域でのアクセス制限、JWTなどの認証機能などがあげられますが、それぞれ「NGINX」で実現可能(一部、「NGINX Plus」のみ対応)となっています。また、API Gateway製品の多くは「NGINX」をベースに開発されています。
- WAF(Web Application Firewall)
「NGINX Plus」であれば「NGINX App Protect」というWAF(Web Application Firewall)機能を組み込むことができます。F5社が長年開発してきたWAF製品であるF5 BIG-IP AWAFで培われた防御機能やSignatureがNGINX App Protectにも搭載されています。「NGINX」はソフトウェアであり、Linuxがデプロイされていれば、場所を選ばずに利用することができます。「NGINX App Protect」は「NGINX Plus」に組み込んで利用するため、あらゆる場所において堅牢なWAFセキュリティを実現することができます。
おわりに
いかがでしたでしょうか。「NGINX」について、あらためて紹介させていただきましたが、「NGINX」ご活用へ向けての一助になれば幸いです。
NGINXにご興味ございましたら、以下よりお気軽にお問い合わせください。
「テクマトリックス NGINX紹介ページ」
また、同ページにて「NGINX」に関する動画も公開しておりますので、ぜひご覧ください。
BIG-IPのリプレースについてはこちらから