Nginxの概要
Nginx(エンジンエックス)は、オープンソースのWebサーバ/リバースプロキシで、IMAP/POP3のプロキシサーバとしても動作します。
Nginxは、2002年ロシアのエンジニアIgor Sysoevによって開発され、2004年にオープンソースプロジェクトとして公開されました。現在は、彼が2011年に設立したNginx, Inc.が中心となって開発が進められおり、商用サポートも提供されています。
Nginxは、軽量かつ高性能、基本的なHTTP機能の他にも多くの機能を備え、マルチプラットフォームに対応している、設定の容易さ、消費リソースの低さなどから近年人気が急上昇しており、Apache HTTPサーバの代替として導入が進んでいます。
Nginxは、C10K問題(クライアント1万台問題※)に対応して設計されたサーバであり、同時接続ユーザ数が多いサイトでの高速な処理には定評があります。
Netcraftの2022年4月の調査によると、Nginxは全サイト最大のマーケットシェア(31.13%)を持ち、また活動的な上位100万サイトの 21.79%で使用されているWebサーバであるとされています。
※C10K問題(クライアント1万台問題)とは、ハードウェアやネットワークの性能に問題なくてもクライアントの同時接続数がある一定数を超えるとサーバがパンクする問題のこと。 C は「Client(クライアント)」の頭文字、10K は「1万台」を意味します。
Apache HTTPサーバなどでは、クライアント1台に対しプロセス番号を1つ振るため、大量の同時クライアントの接続によりプロセス番号が不足し、 これがボトルネックになってWebサーバの処理速度が遅くなり、最悪の場合はサービス停止となります。この接続クライアントの限界が5桁あたりなので、C(クライアント)10K(1万)問題と言われています。
Nginxは、このC10K問題を解決することを目的とし、Webページのリクエストのたびに新しいプロセスまたはスレッドを立てるApache HTTPサーバとは異なった、イベント駆動アーキテクチャを採用しています。
Nginxの主な機能
主な機能は以下のとおりです。
機能 | 詳細 |
---|---|
Layer 7での高速化 | ・HTTP、HTTPS、SPDY、SMTP、IMAP、POP3 ・ロードバランサ、キャッシュ、リバースプロキシ ・サーバーあたり100万の同時接続 ・インスタンスごとに100K +仮想サーバ ・圧縮 ・静的コンテンツのオフロードとHTTPビデオストリーミング |
アプリケーションリクエストルーティング | ・HTTP、FastCGI、 SCGI、 uwsgi、 memcached ・完全一致、プレフィックス、正規表現ベース |
SSL認証機能(SSLターミネーション) | TLSv1.1/TLSv1.2/TLSv1.3/SSL/SNI |
セキュリティ | ・帯域、コネクションとリクエストのポリシング ・リクエストのフィルタリング |
高可用性 | ・アクティブ-アクティブ、アクティブ-スタンバイ構成 ・ノンストップ要求処理でのライブバイナリアップグレード |
Nginxの主な特徴
主な特徴は以下のとおりです。
マルチOS | Linux、BSD系、Mac OS X、Solaris、Microsoft Windowsなど、さまざまなOSをサポート |
---|---|
高速 | アプリケーションコンテナが、多くの同時接続のユーザのハンドリング、圧縮、SSL、キャッシュ、ロードバランス、リクエストルーティングから切り離されているため、応答速度が速い |
設定の容易さ | 基本設定がApacheよりもスケーラブルであり、簡単かつ論理的で分かりやすいとされている |
消費リソースの低さ | 従来のWebサーバでは同時接続数が増えると、プロセス数やスレッド数が増えてメモリを消費してオーバーヘッドが大きくなるが、Nginxはリクエストの処理がスレッドに依存せず、スケーラブルな非同期のイベント駆動アーキテクチャを採用しているため、CPUの負荷とメモリ消費量を抑えること可能 そのため、その他のリソースをリバースプロキシやメモリキャッシュなどに回すことでサーバのリソースを効率的に利用することができたり、稼働時のメモリ使用量も予測できる |
高機能 | Webサーバ/リバースプロキシだけでなく、キャッシング、ロードバランサ、HTTPメディアストリーミング、IMAP/POP3のプロキシサーバとしても動作 また、モジュールにより機能を拡張できる仕組みになっており、サードパーティ製のモジュールも多い |
コスト効果 | Nginxはライセンス費用がかからないため、商用製品に比べて大幅に導入コストを削減可能 |
Nginxと同様の機能を提供する商用製品
- Microsoft Internet Information Services (IIS)
- Oracle HTTP Server、IBM HTTP Server
Nginxの商用製品との機能比較
商用製品との機能等の比較は以下のとおりです。
機能 | Nginx | Apache HTTP Server | 商用製品A | 商用製品B |
---|---|---|---|---|
HTTP機能 | ||||
静的ファイル・インデックスファイルの処理および自動インデクシング | ○ | ○ | ○ | ○ |
キャッシュ付きリバースプロキシ | ○ | ○ | ○ | ○ |
ロードバランサ(負荷分散機能) | ○ | ○ | ○ | ○ |
フォールトトレランス(耐障害性機能) | ○ | ○ | ○ | ○ |
SSL/TLSサポート | ○ | ○ | ○ | ○ |
Basic認証 | ○ | ○ | ○ | ○ |
Digest認証 | ○ | ○ | ○ | ○ |
FastCGI, uWSGI, SCGI サポート | ○ | 〇 | △※1 | ○ |
名前ベースおよびIPベースの仮想サーバ | ○ | ○ | ○ | ○ |
キープアライブとパイプライン接続のサポート | ○ | ○ | ○ | ○ |
同一アドレスからの同時接続もしくは同時リクエストの制限 | ○ | △※2 | ○ | ○ |
gzip圧縮 | ○ | ○ | ○ | ○ |
10000以上の同時コネクションを処理する能力 | ○ | ○ | 不明 | 不明 |
URL Rewrite | ○ | ○ | ○ | ○ |
ログのカスタマイズ | ○ | ○ | ○ | ○ |
Server Side Includes | ○ | ○ | ○ | ○ |
WebDAV | ○ | ○ | ○ | ○ |
クライアント処理を中断させること無く再構成、オンラインアップグレード | ○ | ○ | × | ○ |
3xx-5xx エラーコードのリダイレクト | ○ | ○ | ○ | ○ |
FLVストリーミング | ○ | × | × | ○ |
埋め込み perl | ○ | ○ | × | ○ |
速度制限 | ○ | ○ | ○ | ○ |
メールプロキシサーバ機能 | ||||
外部の HTTP 認証サーバと内部 SMTP バックエンドへの接続リダイレクトを利用したユーザ認証 | ○ | × | ○ | × |
SMTP、POP3、IMAP認証 | ○ | × | ○ | × |
STARTTLSサポート | ○ | × | ○ | × |
SSL/TLSサポート | ○ | × | ○ | × |
※1 IISでは、uWSGIとSCGI対応にはサードパーティ製モジュールが必要
※2 Apacheでは、サードパーティ製モジュールが必要
サードパーティ提供によるモジュール
Nginxは、モジュールにより機能を拡張できる仕組みになっており、サードパーティ製のモジュールが数多くあります。
https://www.nginx.com/resources/wiki/modules/index.html
Nginxの動作環境
前提となる動作環境は、以下のとおりです。(バージョン1.18.0の場合)
サーバ
- OS
・Linux(RHEL/CentOS、Debian、Ubuntu、SUSE、Alpine)
・FreeBSD
・macOS
・Solaris
・Microsoft Windows
- Nginx が Support する代表的な開発言語
・PHP
・Ruby
・Python
・Perl
※バージョンによって動作環境は異なります。
Nginxのライセンス
Nginxのライセンスは、BSD系の 2条項ライセンスです(BSD-likeライセンス)です。
BSD-likeライセンスは、ベースとなるBSDライセンスをベースとして作成されたもので、記載された2つの条件下で、改変の有無に関わらず、ソースやバイナリの利用と再配布が認められています。
参考情報
Nginxオフィシャルサイト
https://nginx.org/en/
Nginxドキュメント
https://nginx.org/en/docs/
Nginxダウンロード
https://nginx.org/en/download.html
Nginxセキュリティ情報
https://nginx.org/en/security_advisories.html
Nginxのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。