【超入門】これさえ読めばOK!初心者でもわかる NGINX 解説
目次
こんにちは、株式会社ビヨンドの北田です。
今回は初心者の方でも、この記事さえ読めば、NGINX(エンジンエックス) について理解が出来るように、図を含めてわかりやすく解説していきます!
NGINX とは
NGINX(エンジンエックス)とは、ロシアのソフトウェア開発者である、Igor Sysoev(イーゴリ・シソエフ)氏によって開発された、OSS(オープンソースソフトウェア)のWebサーバーソフトウェアです。
2004年に初めてリリースされ、その後急速に普及し、現在では Apache と肩を並べる程の、世界で最も人気のあるWebサーバーの一つとなっています。
そもそもWebサーバーって何…?
そもそもWebサーバーとは、ユーザーからのリクエストを受けて処理を実行し、ユーザーにレスポンスを返すためのサーバのことです。
ホームページなどのサイトを閲覧する際に、ユーザーはWebブラウザを使用し、Webサーバーへリクエストを送信します。Webサーバーは受け取ったリクエストを基にデータを、Webブラウザへレスポンスとして返す事でクライアントの画面にページを表示します。
つまり、NGINX 等のWebサーバーソフトウェアをサーバーへインストールすることにより、サーバーをWebサーバーとして動かすことが可能になるということですね。
NGINX の主な機能
Webサーバーについての説明を行ったので、続いて NGINX の機能について紹介していきます。
NGINX は、Webサーバーとしての基本的な機能に加えて、様々な機能を提供しています。
◇ Webサーバー
HTTP / HTTPSリクエストを受けて、対応するリソース(HTML, CSS, JavaScript などの静的ファイル)を返すことができます。
◇ リバースプロキシ
他のWebサーバーをバックエンドとして、ユーザーからのリクエストを処理することができます。
◇ ロードバランサー
複数のWebサーバーにリクエストを分散して処理することができます。
◇ キャッシュサーバー
静的コンテンツをキャッシュして、配信速度を向上させることができます。
NGINX は基本的にWebサーバーとして使われますが、その一部の機能であるリバースプロキシやロードバランサーといった、単体の機能を切り出して使うことも出来ると理解すると良いと思います。
NGINX のメリット・デメリット
NGINX の概要とWebサーバーについて理解したところで、Webサーバーとして NGINX を使用する場合の利点や課題についてご紹介します。
NGINX のメリット
NGINX は主に、高速性・安定性・拡張性に優れているという特徴があります。
○ 高速性
NGINX は、イベント駆動アーキテクチャを採用しており、リクエストごとにプロセスを作成するのではなく、イベントループ方式(シングルスレッドでループ処理をまわし、キューに溜まったイベントを処理していく方式)となっているため、少量のプロセスで大量のリクエストを処理できます。特にHTMLや画像などの静的コンテンツの処理速度が速いため、コンテンツの内容によっては、Apache よりも高速にWebサイトを配信することができます。
○ 安定性
NGINX はシンプルで軽量な設計になっており、Apache がマルチコアスレッドを利用しているのに対して、NGINX はシングルスレッドを利用しているため、メモリ使用量が少ないです。同時接続数が多くなってもメモリ消費量が大幅に増えないため、安定して動作し障害が発生しにくいです。
○ 拡張性
NGINX は、モジュールと呼ばれる拡張機能を利用して、さまざまな機能を追加することができます。そのため、自分のニーズに合わせてカスタマイズすることができます。
NGINX のデメリット
続いて、NGINXを使用する際の課題についてご紹介します。
△ 動的コンテンツの処理が得意ではない
NGINX は静的コンテンツ配信には長けていますが、掲示板やSNSのような動的なコンテンツの処理速度は Apache ほど高くありません。大量の動的コンテンツがある場合は、動的コンテンツの処理が得意な Apache と組み合わせたり、CMS やアプリケーションサーバーと連携して、動的コンテンツの処理を補完できるような構成にする等の工夫が必要になります。
△ 初心者向けのドキュメントが少ない
NGINXは、Apacheより歴史が10年ほど浅いため、Apache と比べるとどうしても日本語によって記述された初心者向けのドキュメントが少ないです。そのため、機能を拡張したい場合などにおいても、Apache の方が実装方法に関する情報がインターネット上で手に入りやすく、機能追加がしやすいです。
以上のことから、大量な静的コンテンツや同時接続の処理は「NGINX」、少量だけど重たい動画などの処理には「Apache」など、目的に応じて使い分けることで、サーバーのパフォーマンスを上げることが出来ます。また、構成を工夫したり相互運用することで、メリットを共有し、デメリットを克服することも可能です。
NGINX の歴史と今後
最後に NGINX の歴史と今後について紹介していきます。
冒頭の紹介でも書いた通り、NGINX はロシアの開発者のイーゴリ・シソエフ氏(以下、シソエフ氏)によって、2004年に無料の OSS としてリリースされました。その後、シソエフ氏はマキシム・ドゥーニン氏およびアンドリュー・アレクセーエフ氏と共同で、2011年に商用サポート提供のための会社「NGINX Inc.」を設立。着実にシェアを伸ばし続け、2024年5月時点では世界中のWebサーバーのうち、34.3%で NGINX が使用されていると推測されています。
NGINX Inc. は2019年にアメリカのサーバー企業である F5 Networks によって、6億7000万ドル(約1000億円)で買収されましたが、NGINX をオープンソースソフトウェアであることを維持し続けると発表しており、買収後も以前同様に開発が行われていました。
しかし、2024年2月14日、NGINX Inc. の共同設立者の1人であるドゥーニン氏は、NGINX のメーリングリストにおいて、F5 Networks と決別し、新たに NGINX のフォークとして「freenginx」の開発を行うと発表しました。発表によると、ドゥーニン氏は2022年にモスクワ事務所が閉鎖された時に、F5 Networks との関係が無くなっており、それ以降はボランティアとして NGINX の開発に携わっていたとのこと。
無給であること自体については問題は無かったようですが、F5 Networks の管理職が交代し、開発者やコミュニティを無視して NGINX のセキュリティポリシーに干渉したことで、NGINX の開発が完全に F5 Networks の管理下に置かれてしまいドゥーニン氏が制御できなくなってしまったことから、「NGINX の開発を企業の自分勝手な行動から守るため」として、新たに NGINX のフォーク版である「freenginx」プロジェクトの立ち上げを発表したと考えられます。
NGINX をフォークした freenginx は、最初のバージョンとして「freenginx-1.25.4」正式版を公開しており、現在(2024年5月1日)は安定版の「freenginx-1.26.0 」も提供されています。
◇ 引用:https://freenginx.org/en/download.html
今後は freenginx が NGINX とは別にどのような進化をするかが次の注目点といえそうです。
NGINX まとめ
NGINX は、高速性、安定性、拡張性に優れたWebサーバーで、幅広い用途で利用することができます!
適切に利用することでWebサーバーとしてのパフォーマンスをかなり上げることが出来るので是非利用してみてください。
「NGINX についてもっと詳しく知りたい!」という場合は、以下の公式サイトやドキュメントを参照してみてください。
◇ NGINX 公式サイト:https://nginx.org
◇ NGINX 公式ドキュメント:https://nginx.org/en/docs
また、以下記事でも NGINX について詳しく紹介しておりますので是非見てみてください。
https://beyondjapan.com/blog/2023/11/nginx_history
このブログ記事が、NGINX について理解を深めるのに役立てば幸いです、