大規模なWebサイトを中心に、世界でのシェアが急拡大しているオープンソースのWebサーバーソフト「Nginx(エンジンエックス)」。その導入のハードルが下がる。これまでは日本語の情報が少なかったが、日本語サポート付きの商用版「NGINX Plus」の販売開始や国内ユーザー会の発足で、解消に向かっている。
WebサーバーソフトといえばApache HTTPサーバ(以下Apache)やMicrosoft IISなどが知られているが、最近世界的に勢いを増しているのがNginxだ。
Nginxの特徴は、膨大なアクセスを効率的に処理できること。オーストリアQ-SuccessのWeb調査「W3Techs」によると、アクセス数が世界で上位1000および上位1万のサイトでNginxのシェアが特に高い(図1)。実際、海外では米Dropboxや米Facebookなど、国内ではクックパッドやヤフーなどの大手サイトが採用している。
国内での利用がさらに広がりそうだ。2014年7月1日に、サイオステクノロジーが商用版「NGINX Plus」の販売および日本語によるサポートを始めた。さらに、国内ユーザーコミュニティーが発足した。このように国内におけるNginx導入のハードルが下がったことで、Webサーバーソフトとして圧倒的なシェアを占めるApacheの代替として検討する価値が高まった。
Apacheの制約を解消
Nginxとは、一体どのようなソフトなのか。技術的なポイントは大きく二つある(図2)。一つは「メモリーの割り当て方」。その工夫により、同時接続数を大幅に増やした。もう一つは「HTMLの処理」。これをアプリケーション(AP)サーバーから切り離し、負荷分散させる。どちらも、Apacheの拡張性における課題を解消するものだ。
ここでは、NginxをWebサーバーのフロント部分に設置しリバースプロキシーサーバーとして利用するケースを題材に、Apacheと比較して説明しよう。
ポイントの一つめであるメモリーの割り当て方については、Apacheの場合、接続してきたクライアントに対してメモリーを割り当てると、httpリクエストなどの処理が終わっても、コネクションを切断しない限りメモリーを確保し続ける。メモリーのこの無駄な使い方によって同時接続数が制限されることが課題の一つとなっている。