「WebサーバソフトウェアといえばApache」とは限らない。オープンソースソフトウェアの「nginx」もオンプレミス/クラウドを問わず、よく見掛けるようになった。その特長は?
「nginx(エンジンエックス)」とは、オープンソースのWebサーバソフトウェアの1つである。より少ないリソースで大量のリクエストを処理可能なスケーラビリティと、豊富なプロキシ機能が主な特長とされる。Igor Sysoev氏によって開発され、現在はNGINX社によって開発が続いている(Sysoev氏は同社の創業者の一人)。
Webサーバソフトウェアで最大勢力の「Apache」に対し、nginxのシェアは次第に迫ってきている。調査サービスW3Techsによれば、2016年7月時点でApacheの51.8%に対し、2位のnginxは30.8%とのことだ。2010年の3.9%から順調にシェアを拡大している。
シェアの調査結果からは、負荷の高いWebサイトではApacheよりnginxの採用が多いことも挙げられる。これはnginxの特長の1つであるスケーラビリティの高さが反映されている、といってよいだろう。
nginxでは、クライアントからの同時かつ大量のリクエストを、より少ない台数のサーバでさばけるように設計されている。
具体的には「イベント駆動」や「非同期処理」「ノンブロッキングI/O」といった処理効率を高めるための技術がアーキテクチャ*1に組み入れられている。またプロセス数を抑えることで、コンテキストスイッチングによるオーバーヘッドを減らしている。
*1 nginxのアーキテクチャの詳細は、「The Architecture of Open Source Applications」[英語]が詳しい。
さまざまなプロキシの機能を持っていることも、nginxの特長の1つだ。代表的なのはリバースプロキシで、負荷分散(ロードバランサー)やSSL(TLS)の集約、複数のWebアプリケーションの統合といった用途によく利用されている。むしろWebサーバではなく、リバースプロキシとしてnginxが採用されることも珍しくない。
またメールサーバのプロキシも可能だ。例えばSMTP/POP/IMAPというメールプロトコルの要求をnginxが受け付けつつ、バックエンドのメールサーバに中継できる。さらにはTCP/UDPレベルの汎用的なプロキシ機能も装備している。
nginxでは、「モジュール」と呼ばれるソフトウェアのパッケージで各機能が実装されている(前述のメールプロキシもプロトコルごとにモジュール化されている)。標準で多数のモジュールが用意されている他、サードパーティー製の各種モジュール(その多くはオープンソース)もたくさん提供されていて、nginxをさまざまな用途に活用するのに役立っている。
もちろんnginxは、現在のWebサーバに必要な機能を実装済みだ。比較的新しい仕様や規格もサポートされている。
機能名 | 特長 |
---|---|
キャッシュ | FastCGIやmemcachedなどのサーバもサポート |
プロトコルのサポート | HTTP/2やWebSocketにも対応 |
SSL(TLS) | SNI(Server Name Indication)にも対応 |
URL Rewrite | 正規表現で判定・書き替え可能 |
アクセス制御 | ベーシック認証やソースIPアドレスなどでブロック可能 |
バーチャルサーバ | 単一のサーバで複数のサイトを運用できる(ドメイン名やIPアドレスで振り分け可能) |
Webサーバとしてのnginxの主要な機能 |
nginxは、LinuxやFreeBSD、Mac OS X、その他のUNIX系OS上で実行できる。Windowsプラットフォームにも移植されているが、パフォーマンスやスケーラビリティを期待すべきではないとのことだ。
レンタルサーバについては、少なくとも国内ではApacheの採用が多く、nginxはなかなか見掛けない。
一方クラウドサービスでは、nginxをプリインストールした仮想マシンのイメージをラインアップしていることが珍しくない。他にも、AWSのアプリケーション展開・管理サービス「Elastic Beanstalk」では、プロキシサーバとしてnginxを標準でサポートしている。
オープンソース版のnginxに対して、より高機能でテクニカルサポートも受けられる「NGINX Plus」という商用版も提供されている。
Copyright© Digital Advantage Corp. All Rights Reserved.