nginxとは?
EC事業の拡大や非対面での取引が進展する中、企業の事業活動におけるWebサイトの重要性が高まっています。より効率的にWebサイトを運用するためには、Webサイトのデータの管理や処理を担う「サーバソフトウェア」が重要です。
市場には多くのWebサーバが存在する中で、近年導入が増えているのが「nginx(エンジンエックス)」です。なぜ、nginxは人気が高まっているのでしょうか。nginxの特徴や競合のApacheとの比較を通して、その理由を解説していきます。
nginxとは?
nginx(エンジンエックス)とは、Webブラウザからサーバへアクセスした際にHTMLや画像などを表示する役割を担うソフトウェアである「Webサーバ」の1種です。
Webサーバとしての機能以外にもリバースプロキシやキャッシュ、ロードバランシング、メディアストリーミングなど多くの機能を備えています。
nginxは、2002年にNGINX社(F5ネットワークスが2019年に買収)の協同創業者でもあるIgor Sysoev(イーゴリ・シソエフ)氏によって開発され、2004年に一般公開されました。
現在はNGINX社が管理し、ソースコードが公開されているオープンソースソフトウェア(OSS)として無料で公開・配布されています。2013年には商用版「NGINX Plus」も発表されました。
【参考】:nginx公式サイト
nginxが誕生した背景
nginxが誕生した理由として、イーゴリ氏は「C10K問題を解決するために開発した」と明らかにしています。「C10K」とは、1999年に作られた用語で「クライアント(C)が大量(10K)に同時接続するとサーバがパンクする」ことを意味しています。
既存Webサーバで起きていた大量のクライアントからの同時アクセスを処理しようとするとレスポンスが大きく下がる課題を解決するために、nginxは開発されたのです。
その後、nginxの開発プロジェクトでは「最速のWebサーバを生み出し、その卓越性を維持すること」が目標に掲げられ、これまで進化を遂げてきました。
nginx以外のWebサーバと人気度
nginx以外にも、Webサーバの種類は数多く存在します。例えば、Webサーバとして最も認知度が高いApacheソフトウェア財団の「Apache HTTP Server(以下、Apache)」やMicrosoft製品の「IIS(Internet Information Services)」などが、その代表例です。
中でも、ApacheはWebサーバの市場シェアで長らく首位に立ってきました。一方、nginxは公開時から着実にシェアを伸ばし、何十万もの同時接続を処理する高トラフィックのWebサイトで利用されるようになりました。
市場調査サービスを手掛けるW3Techsが2021年5月に実施した「人気の高いWebサーバ」調査によると、長らくシェアNo.1だったApacheを抜いて、nginxが初のトップに立っています。
以降、nginxはApacheよりも人気のWebサーバとして広く普及するようになりました。
【参考】:W3Techsの市場調査結果
nginxのメリット
なぜ、nginxは最も利用されるWebサーバになったのでしょうか。その理由は、競合するWebサーバと比較すると、処理性能や負担軽減などの機能面で優れているという特徴があるからです。
また、高いパフォーマンスと安定性を目指して設計されたWebサーバとして開発されています。さらに、Webサーバの機能に加えて、電子メール(IMAP、POP3、SMTP)のプロキシサーバ、HTTP/TCP/UDPサーバのリバースプロキシ/ロードバランサーとしても機能できます。
ここからは、nginxの3つの主な特徴を紹介していきましょう。
処理性能に重きが置かれている
まず、1つ目の特徴が「処理性能に重きが置かれていること」です。nginxは当初から、高いパフォーマンスと安定性を目指して設計されたWebサーバとして開発されてきました。そのため、nginxでは「イベント駆動型モデル」が採用されています。
イベント駆動型モデルと対比されるのが「プロセス駆動型モデル」です。プロセス駆動型モデルでは、クライアントからのアクセス処理において、コンピュータ上で実行されているプログラム(プロセス)が自身の複製を作成して新たなプロセスを起動する「フォーク」処理を実行します。
一方、イベント駆動型モデルではフォーク処理をする必要がないため、高速かつ軽量な動作することで、アクセスへのレスポンスを高速化できるのです。
高い並行処理性能を持つ
2つ目の特徴は「高い並行処理性能を持つこと」です。並行処理とは「1つの処理装置で信号を切り替えながら、複数の処理を実行する処理」のことを指します。
実際には、1つ1つのプロセスを非常に短い時間で処理していますが、人間の目から見ると、あたかも複数の処理を同時に処理しているように見えるのです。nginxでは、イベント駆動型モデルを採用し、高い並行処理を実現することで、大量なアクセスを高速に処理することを可能にしています。
メモリ消費量を抑えられる
3つ目の特徴は「メモリ消費量を抑えられること」です。イベント駆動型モデルを採用することで、処理時により軽量に動作できます。そのため、メモリのリソース消費量の抑制につながっています。
nginxでは、少ないメモリ消費量でアクセス処理を実行することで、既存のWebサーバで起きていた「サーバがパンクする」という状況を回避可能です。その結果、Webサーバの負担を軽減する効果も期待できます。
nginxとApacheとの違い
nginxは処理速度や機能面での特徴をいかして、Apacheと並ぶ人気を持つWebサーバーソフトウェアとして広く普及してきました。ただ、Apacheも根強い人気があり、W3Techsによると、現時点2位ではあるものの高いシェアを誇っています。
nginxとApache、両者にはどんな違いがあるのでしょうか。それぞれの特徴や機能、用途などの違いを見ていきましょう。
そもそもApacheとは?
まず、Apacheの概要について解説します。Apache(正式名称「Apache HTTP Server」)は、1995年に最初のバージョンが公開された長い歴史があるWebサーバソフトウェアです。細かなアップデートを繰り返しながら25年以上にわたり、企業や個人を問わず人気を得てきました。
Apacheは、nginxと同じく無料で使用できるOSSのWebサーバであり、OSを選ばずに動作するため、OSの種類が原因となるアプリケーションやシステムの不具合が発生しづらいです。
また、追加機能を拡張できるモジュールが数多く用意されていて、長年の実績から普及している技術情報も多いため、エンジニアが習得をしやすい点も特徴の1つです。
【参考】:Apache公式サイト
nginxとApacheの特徴の違い
まず、イベント駆動型モデルであるnginxに対して、Apacheはプロセス駆動型モデルを採用している点が違います。
また、nginxとApacheでは処理を得意とするファイル形式が異なります。
WebページにはHTMLファイルや画像ファイルなどを取り扱いますが、大きく分けるとクライアントのリクエストの内容に影響されない常に同一内容である「静的ファイル」と、クライアントからの要求に応じて動的に生成される「動的ファイル」の2種類に分けられます。
nginxは静的ファイルの処理に向いており、Apacheは動的ファイルの処理に向いています。
さらに機能面では、nginxはWebサーバの基本的な動作を得意とする特化型で、Apacheは、すべての動作を平均的にこなせる汎用型であるという点で異なります。
nginxを利用するメリット
Apacheでは、リクエストごとにプロセスが起動して処理するため、同時処理数が多ければ多いほど、メモリに負担をかけてしまう傾向が見られます。
一方、nginxは大量な同時アクセスのデータ処理に高速で対応でき、メモリの消費量を抑えられます。そのため、Apacheよりも高速に各プロセスを処理してユーザーへサービスを提供したり、Webサーバの負担を軽減できるなどのメリットがあります。
Apacheを利用するメリット
nginxは静的ファイルの処理に向いている反面、大量の動的コンテンツを扱う処理は得意ではありません。動画を中心としたWebサイトを運営する場合は、Apacheの方が適しているでしょう。
具体的には、PHPやPerl、CGIなどCPUを使用するコンテンツの処理に関しては、Apacheの方が向いています。
また、Webサイトのコンテンツを一元的に保存・管理する「CMS(Contents Management System)」を利用する際、Apacheの方が比較的簡単な設定で済みます。さらに技術情報が豊富なApacheは、初心者でも扱いやすいです。
nginxの利用シーン
Webサーバ市場で高いシェアを持つnginxは、どのような用途で利用されているのでしょうか。nginxの特徴を踏まえて、具体的な活用方法やApacheとの上手な使い分けについて解説していきます。
nginxの最適な活用方法
Webサーバ機能に特化したnginxは、リクエストを他のサーバへ転送する「リバースプロキシ」として利用すると、その特徴を活かすことができます。
また、同時アクセスが急増した際にWebサーバの負荷を軽減できる「ロードバランサー」として利用することも可能です。
特に、同時接続数が多い大規模なWebサイトや、ストレスを感じさせない素早いレスポンスが求められるユーザビリティ重視のWebサイトなどで活用するとよいでしょう。
nginxに不向きな活用方法
nginxはCPUを使用する処理が苦手であるため、Webサーバとアプリケーションサーバ(APサーバ)を兼務するシステム構成にはあまり向きません。
具体的な例としては「Web層」「AP層」「DB(データベース)層」で構成される「Web3層構造」のシステムにおいて、WebサーバとAPサーバを集約したい場合が挙げられます。
nginxは汎用型であるApacheと異なり、nginx単体で構成を完結させたいシステム設計には向いていません。
nginxとIISとの違い
代表的なWebサーバの1つであるIISとの違いについても触れておきましょう。
Microsoft社製のWebサーバであるIISは、Windows OS上で簡単に動作させられ、同社のアプリケーションと相性が良いという特徴があります。
その一方で、Windows環境でしか利用できないというデメリットもあります。そのため、汎用性が高いとはいえません。
特化型nginxと汎用型Apacheの上手な使い分け
nginxとApacheの特徴の違いに着目し、最近ではバックエンドのWebサーバとしてApacheを、フロントエンドのWebサーバとしてnginxを組み合わせる活用方法が増えています。
処理性能や負担軽減面に優れるnginxですが、決して万能ではありません。Webサーバにはそれぞれのメリットやデメリットがあります。それぞれのWebサーバの特徴を理解した上で、自社に適したWebサーバを検討することをおすすめします。
nginxの設定・運用方法
ここからは、実際にnginxを活用する際の手順を紹介します。
誰でも無料で利用可能なnginxをどう入手して、設定・運用していくかを順に見ていきましょう。
nginxの入手・設定
nginxは、公式サイトからダウンロードすることで入手できます。nginxは、BSDライセンスで提供されます。BSDライセンスとは、著作権の表示と免責条項さえ明記すれば、再利用や再配布が可能であるライセンス体系です。
nginxを利用できるOSの種類としては、Linux・BSD系・Mac OS X・Solaris・Microsoft Windowsなどが挙げられます。
専用ページから入手したいバージョンを選択してダウンロードします。次に、ダウンロードした圧縮ファイルを展開して、任意のフォルダに配置することでインストールが完了します。
【参考】:nginx公式サイト
nginxでは、どんなエラーが起きる?
nginxを起動してWebページを開いた時に、画面上に「nginx error」と表記されることがあります。その際は、nginxのエラーログを確認することで原因を探り、適切に解決することが求められます。
nginxが起動しない場合は「設定ファイルの不備」「ポートの競合」「ロックファイルが残っている」などの原因が考えられます。運用時のトラブル対応については、各種文献やネット検索、コミュニティや認定ベンダーなどのサポートを受けることで解決可能です。
今後さらに需要が高まるnginx
nginxは、開発当初から「並行処理を高速に実現する」「メモリ消費を抑える」ことを目指してきました。そうした特徴は、大量の同時アクセスを高速に処理することに適しています。
そのため、オンライン・ショッピングやSNSなどのWebサービスが幅広く普及した現代に最適なWebサーバソフトウェアだといえます。
また、IoTやAI、ビッグデータなどを活用し、より多くのデータを扱うシステムが必要になることが予想されるため、nginxのニーズは今後さらに増すと考えられます。これからエンジニアとして活躍していくためにも、ぜひnginxに関するスキルを習得することをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから