LoginSignup
1
1

More than 3 years have passed since last update.

【初学者向け】Nginxって? 

Last updated at Posted at 2021-01-12

はじめに

未経験からWeb系エンジニア職へ転職活動を行っています。企業との面談中に出てきたNginxというワードに聞き馴染みがなく震えたので今回まとめました。筆者は違いを意識せずApacheを使っていたのであまり馴染みがなかったようです。。

Nginxとは

Webサーバーの一種。Webサイトを公開する時に様々なサーバーが動いているが、その中心になるのがWebサーバーである。Webサーバー用のソフトウェアには、種類と得意分野がある。以前まではApacheが有名で多く利用されていたが、近年ではNginxも注目されており、2020年8月時点のWebサーバーのシェアは第1位Nginx(36.45%)、第2位Apache(25.87%)となっていて、目覚ましい成長がある。
参考:https://news.netcraft.com/archives/2020/08/26/august-2020-web-server-survey.html

ミドルウェア:
コンピュータを制御するオペレーションシステム(OS)と、特定の処理を行うアプリケーションソフトウェアとの間に存在するソフトウェアのこと。

Webサーバーソフトウェア:
ミドルウェアの一つ。HTTPリクエストを送った後に、何かしらのレスポンスを返すプログラム。

NginxとApacheの比較

Nginx(エンジンエックス)

  • オープンソースソフトウェア(OSS)
  • Apachと比較して、Nginxは高速かつ高負荷に強い
  • C10K問題をはじめ、大容量のデータ配信や大量同時接続に耐えることを目的に設計された。
  • ノンブロッキングI/Oと非同期のイベント駆動アーキテクチャを採用することで、Apacheと比較して同時接続数が10〜100倍くらいになる。→Nginxはworkerと呼ばれるシングルスレッドのプロセスを複数利用している

Apache(アパッチ)

  • 正式名称は「Apache HTTP Server」
  • オープンソースソフトウェア(OSS)
  • マルチプロセスモデル(接続毎にプロセスをフォーク)のため、メモリがいっぱいになりやすい  →リクエストを処理するごとにリソースが枯渇してしまう
  • CMS(Contents Management System)を利用する際に、比較的簡単な設定で済む
  • 約20年間OSSとして公開され、バージョンアップした結果、信頼性が高い

・オープンソース:
WordPressのようにプログラミングを無料で利用でき、自由にカスタマイズができる。

・C10K問題:
Apache HTTP ServerなどのWebサーバソフトウェアとクライアントの通信において、クライアントが約1万台に達すると、Webサーバーのハードウェア性能に余裕があるにも関わらず、レスポンス性能が大きく下がる問題
参考:https://qiita.com/katu_/items/01c9c35d17a541014d32

・イベント駆動型アーキテクチャ:
変化に適応できてリアルタイムで意思決定できる、柔軟なシステムを組織が達成できるよう支援します。リアルタイムで状況を把握できるので、システムの現状を表すすべての利用可能なデータを使用して、手動または自動でビジネス上の意思決定を下せます。
参考:https://www.redhat.com/ja/topics/integration/what-is-event-driven-architecture
・シングルスレッド
コンピュータのプログラムは、基本的に1行ずつコードが実行されながら動作する。通常、分岐やループがあっても、プログラム全体は1つの流れになっている。このような一連のプログラムの流れを「スレッド(糸)」と呼ぶ。1つのスレッドだけからなるプログラムを「シングルスレッドなプログラム」という。一方、処理効率を上げるなどの目的で1つのプログラムで複数のスレッドを同時に実行することができる。これを「マルチスレッド・プログラム」という。
参考:https://www.atmarkit.co.jp/ait/articles/0503/12/news025.html

Nginxが向いている分野

  • 一般向けのWebサービスなど多数の同時アクセスが発生する業務
  • 静的コンテンツが多いWebサービスなど

静的コンテンツ:
静的コンテンツは、index.html などのように、要求のパスに指定されたhtmlなどのデータがそのまま応答のデータとして送信される方式のWebページのことです。誰が見る場合でも常に同じ内容を提供する場合に使われます。
参考:静的コンテンツと動的コンテンツ
http://juen-cs.dl.juen.ac.jp/html/www/005/

NginxとApacheの使い分け

Nginxの場合

  • 負荷が高く、スケーラビリティが要求される
  • 静的ページに同時多数のアクセスが想定される

Apacheの場合

  • 負荷が低く、早期または簡単なセットアップが必要
  • 同時アクセス数が小さく、リクエスト数が多い

参考:
https://www.out48.com/archives/1576/
https://qiita.com/kamihork/items/49e2a363da7d840a4149

おわりに

Nginxを実際に触ったことがないため、あまり深くまでApacheとの比較はできませんでした。
今後の学習で、この記事に深みを出していきます。
(もしこの記事に誤りがありましたらご教授いただけると幸いです。)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1