nginxとは?
nginx(エンジンエックス)とは、数年前から名前を見かけることが多くなったWebサーバーで2002年にロシアのIgor Sysoev氏によって開発されたのち、 現在は NGINX Inc. によって管理されています。
どのくらいシェアを伸ばしているのか調べてみると、W3techsの「Nginx reaches 33.3% web server market share while Apache falls below 50%」という記事で、 nginxがWebサーバのシェア33.3%に到達したと伝えています。
実際にnginxを採用している事例も多く、FacebookやCNN、クックパッドなどの大手企業が利用しているようです。
nginxの特徴
C10K問題
C10K問題とは、1万台近くのクライアントでサーバへの同時接続が発生すると、プロセス数やスレッド数が増え、メモリを食いつぶしたり、コンテキストスイッチのオーバーヘッドが大きくなり、本来の処理に時間が割けなくなったりしてサーバがパンクしてしまうといった問題です。このような問題に対応できるよう、nginxはイベント駆動という仕組みで実装されたWebサーバとなります。
高速かつ軽量
C10K問題に対応可能な設計として、イベント駆動という仕組みが採用されており、nginxでは1プロセス1スレッドという仕様により、メモリも節約できる設計となっています。この設計により大量のリクエストにも耐えることができる高速・軽量なWebサーバーになっているそうです。
静的なコンテンツを提供する
HTMLや画像などの静的コンテンツの情報をキャッシュするといった性能を上げるための様々な工夫がされています。動的なコンテンツへの対応は、nginx単体では用意されておらず別途アプリケーションサーバと連携することにより対応します。
リバースプロキシ
nginxはリバースプロキシとして機能を提供しています。バックエンドのWebサーバから取得したコンテンツをキャッシュすることで、サーバーの負荷を減らしたりすることができます。
ロードバランシング
ロードバランサーとしての機能を提供しています。バックエンドのサーバに処理を振り分け、各サーバーの負担を効果的に分散することが可能です。