LINEで現役エンジニアに直接質問してみよう!登録無料

Nginx(エンジンエックス)とは?役割、特徴、使う理由を初心者にも分かりやすく解説

NginxはWebサーバーの1つです。 Ningxは「エンジンエックス」と読みます。

Nginxとは?

Nginxは高速軽量なWebサーバーの1つです。2002年からIgorSysoev氏によって開発され、今ではNginx,inc.を立ち上げて管理されています。

Nginxが登場する前は、Apatchがよく使われていました。しかし、Apatchでは大量のアクセスに対応しきれない欠点がありました。 そのため、処理性能・高い並行性・メモリ使用量の小ささに焦点をあて、静的なコンテンツを高速に配信できるように開発されました。 現在では、リバースプロキシ、ロードバランシング、 HTTPキャッシュ等の機能も兼ね備えています。

Nginxの特徴

Nginxの特徴は「大量の同時アクセスの処理に最適化し、静的コンテンツの配信に特化したWebサーバー」であることです。 そのため、突発的にアクセス集中しても、高速に安定したWeb運営を行うことが出来ます。

Unix系OS、Linux、BSD系OS、MacOSX、Solaris、AIX、HP-UX、Windows等ほとんどの主要なOSに対応しています。

Nginxの特徴
利点
  • Apatchの弱点を補うために開発
  • HTMLや画像等の静的コンテンツ配信を高速に行える
  • メモリの使用量が少ない
  • メモリの管理方法の最適化によって、同時接続数を向上
  • リバースプロキシ機能
  • ロードバランシング機能
欠点
  • 動画などの1つのリクエストが長いコンテンツ配信は不得意

NginxはオープンソースなWebサーバーです。特徴はとても動作が軽く使用するメモリ量が少なく、大量のリクエストが来ても処理を行うことができるように設計・開発されていることです。静的コンテンツの配信、リバースプロキシ、ロードバランシング等の用途にNginxが多く採用されています。

逆に、NginxはメモリやCPUリソースが沢山必要な処理には向いていません。時間が長い処理を実行した場合、プロセスがアクセスをブロックしてしまい性能が低下してしまいます。

Nginxのシェア率と採用実績

https://w3techs.com/

Apacheとのシェア差はどんどん縮まっていて、今では数%差となりました。ApatchとNginxはそれぞれに利点と欠点があるのでシェア率だけで良し悪しをくらべることは出来ません。しかし、HTMLや画像ファイル配信はどんどん配信量が多くなっているので、Nginxの重要度はどんどん高まっていくと思っています。

実際に、大企業もNginxを沢山使っています。

  • クックパッド
  • サイバーエージェント
  • pixiv
  • Wikipedia
  • facebook
  • Hulu
  • Dropbox
  • Github
  • Groupon
  • Yandex
  • Zynga
  • SourceForge

クイナ

マイナビニュースからも、Nginxがシェア1位になったことが報道されたんだ
Nginxが第1位に – 4月のWebサーバシェア調査

Nginxが解決する「C10K問題」

Apatchの場合、ハード性能的に問題が無いはずなのに、リクエスト数が多くなりすぎるとサーバーがダウンしていしまう問題が起こります。それは、「プロセス番号」が足りなくなるからです。なぜなら、リクエストが来る度に新しくプロセスを立ち上げる仕組みだったからです。

プロセスとは、「1つの処理それぞれにOSから割り振られた番号」のこと。どういう単位で「1つの処理(直列実行)」とするのかは、私達プログラマが決めることが出来ます。 Unix系OSだと、プロセス番号は「最大32767(符号付き16ビット整数)」です。つまり、これ以上のアクセスを同時に受けると、サーバーがダウンしてしまうのです。

この問題を解説するために、「イベントループ方式」が開発されました。イベントループ方式は「プロセスの中でキューに溜まったリクエスト」を順次処理していく方式です。 そのため、コンテンツ配信などの軽い処理はより高速に大量にアクセスをさばけるようになりました。

Nginxの機能: リバースプロキシ

リバースプロキシとは、「キャッシュしたコンテンツを配信する仕組み」の事です。

大量のリクエストの応答を肩代わりする事により、静的コンテンツ配信の負荷を肩代わりしたり、アクセス制限をする機能のことです。これにより、サーバーの負荷を軽減したりセキュリティを高めたりすることが出来ます。

Nginxの機能: ロードバランサ

ロードバランサとは、「特定宛先のアクセスを複数サーバに分散する仕組み」の事です。

リクエストを管理して、同等の機能を持つWebサーバーにリクエストを分散して送信する仕組みの事です。アクセスが増えると1台のサーバーでは賄えなくなってきます。そういうときは、Webアプリケーションサーバーを複数台用意し、それぞれにリクエストを分散させてあげれば、安定してWebサービスを運営できます。「どのWebサーバーにどのくらいのリクエストを処理させるか」を決めるのが、ロードバランサの役割です。

まとめ

  • Nginxは今主流のWebサーバーです。高速でコンテンツ配信を処理できるため、様々なところで使われています。
  • Nginxの設計上、時間のかかる処理は苦手なので、そういうのは別の種類のWebサーバーを用意して処理をさせましょう。
  • Nginxの機能の「リバースプロキシ」「ロードバランサ」はWebアプリケーション開発の現場で使われています。
この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。