Nginxと言うWebサーバーをご存じでしょうか?
Webサーバーといえば、ApacheやMicrosoft IISなどのサーバーが有名ですが、Nginxはそれに迫る勢いでシェアを伸ばしている、いま注目のWebサーバーなのです。
今回は、まだNginxのことをよくご存じない方に向けて、基礎知識や特徴についてまとめてみました。
Nginxの基礎知識
http://nginx.org/en/
いま注目のWebサーバーNginx
Nginxとは?
Nginx(エンジンエックス)は、2002年にロシアで開発されたWebサーバーです。
Apacheと比較してより高速に動作することで知られています。
とても機能が豊富なNginxですが、オープンソースのため無料で利用することが可能です。
BSDライセンスでリリースされていて、LinuxやMacなどのUNIX系OSとWindowsに対応しています。
現在の開発元企業はNginx, Inc.となっています。
また、Nginxにはオープンソース版と商用向けのNginx Plusがリリースされていて、オープンソース版はMainline、Stable、Legacyの3つのバージョンが用意されています。
Nginxが生まれた背景
Webサーバーとしては以前からApacheが大きなシェアを持っていました。
Apacheはオープンソースですし、汎用性もあります。
ただ、大小問わずさまざまなサービスに利用されてきたApacheですが、大量なアクセスに対処しきれないという欠点がありました。この欠点に対応すべく登場したのが、Nginxなのです。
Nginxはもともと、C10K問題に対応するために生まれたWebサーバーです。
C10K問題とは、接続してくるアクセス数が膨大だと、サーバー側がパンクしてしまう恐れがある事です。
C10K問題を日本語では、「クライアント1万台問題」と呼ばれています。
NginxはApacheで起こりやすいC10K問題に対処するために設計されました。
具体的な内容については後述しますが、Nginxが並行処理やメモリの消費を抑えることで高速に動作してくれるのです。
Nginxの活用事例
Nginxはさまざまなサービスに利用されていますが、特に規模の大きなサイトで効果を発揮します。
FacebookやWikipedia、クックパッドなどの大手サイトでも採用されています。
もちろん、規模が大きくなくても十分に利用価値があります。
資源が限られている場合などにもNginxは有力な選択肢の一つになるでしょう。
Nginxの特徴と主な機能
Nginxが注目を集めている理由について探っていきましょう。Apacheと比較しながら、Nginxの特徴や主な機能について順にご紹介していきます。
高速に動作する
Nginxは高速で動作するWebサーバーで、同時に大量のリクエストをさばくことができます。
Apacheなどのプロセス駆動型Webサーバーとはそもそも設計思想が異なっていて、Nginxではイベント駆動型の処理方式を採用しています。
これが、Nginxが高速に動作する大きな理由です。
プロセスが削減できるので、膨大なリクエストにも耐えて動作してくれるのです。
静的コンテンツの扱いが得意
Apacheと比較すると、Nginxは静的コンテンツ(HTTPや画像など)の配信に優れています。
逆に動的なコンテンツの配信はあまり得意ではないので、別でアプリケーションサーバーを立てるなどの対応が必要です。
また、NginxにはFastCGIやuWSGIなど、Webアプリケーション向けのインターフェースも備わっています。
リバースプロキシとして使える
Nginxには、リバースプロキシとしての機能も備わっています。
Nginxが静的コンテンツをキャッシュしておくことで、バックエンドのWebサーバーやアプリケーションサーバーの負荷を減らすことにつながるのです。
ロードバランサーとしても機能するので、大量アクセスの負荷分散をさせることも可能です。
柔軟にモジュールが利用できる
Nginxは多機能なWebサーバーなのですが、それらの機能がモジュール化されていいます。
その結果必要なモジュールだけを組み込むことで、メモリなどの資源の節約につながります。もちろん、独自に開発したモジュールを追加して使用することも可能です。
無料で使用可能
NginxはオープンソースのWebサーバーなので、無料で利用することができます。
Nginxはスタートアップなどのサービスでも頻繁にとり入れられていますが、無料で使えることもその後押しになっているのでしょう。
ただし、Nginx社のサポートを受けることも可能ですが、その場合は有料会員になることが必要になるので注意してください。
ApacheとNginx、どちらを使うべき?
ApacheとNginxについて、どちらもシェアが高く信頼できるWebサーバーであることは間違いありません。
それでは結局のところ、どちらを使うべきなのでしょうか。
負荷が高い場合や静的ページに同時アクセスされることが多い場合はNginxを使うと良いでしょう。
反対に、負荷が高くなく同時アクセスが少ない場合や早期セットアップが必要な場合はApacheが良いでしょう。
Nginxは処理が早く、消費メモリが少ないという良い事ずくめですが、1つの処理が長すぎるとシステムコールキューにリクエストがたまってしまいパフォーマンスが低下してしまいます。
その為、前述のように動的処理や動画コンテンツの配信やデータベース処理等の重い処理をする場合にはApcheが良いとされています。
Nginxについてあとがき
NginxはApacheに引けを取らない、とてもパワフルなWebサーバーです。日本語での情報も増えてきましたし、開発にかかる工数も少ない部類に入ります。
インストールも難しくないので、気になった方はまずはダウンロードして使ってみてはいかがでしょうか?