🙆

Nginxまとめ

2022/02/12に公開

Nginxとは

NginxはNGINX社が提供しているオープンソースのWebサーバです。ApacheなどのWebサーバーにおいて発生するC10K問題[1]に焦点を当てて設計されています。

特徴

大量アクセスの処理が可能

NginxはC10K問題に対応しているためクライアントが1万を超えるような大量なアクセスがある場合でも問題なく動作が可能となっています。

静的なコンテンツの配信に向いている

Nginxは小さなデータをメモリにキャッシュすることが可能です。このためHTMLや画像などの静的コンテンツを高速に配信するという用途に適しています。一方で動的コンテンツのようなCPUを使った処理は得意でないためそれらを扱う場合は別のアプリケーションサーバーを導入する必要がある。

少ないリソースで稼働できる

Nginxは複数のクライアントからのリクエストを一つのプロセスで並列処理を行うためメモリの消費量を抑えることができます。

リバースプロキシ・ロードバランシングが可能

NginxはWebサーバーの前面に配置することでリバースプロキシ、ロードバランサーとして動作させることができます。リバースプロキシで外部ネットワークからの通信を一本化することでのセキュリティの向上やメモリキャッシュを利用したレスポンスなどにより負荷の軽減が可能です。ロードバランサーとして用いることで単一障害点を排除し負荷を分散することができます。

まとめ

得意なこと

  • 大量アクセスの処理
  • 静的なコンテンツの配信
  • 低コストでの稼働

苦手なこと

  • 動的なコンテンツの配信
  • アプリケーションサーバーとしての動作
脚注
  1. C10K問題とはアクセスするクライアントが1万を超えると処理を行うサーバーのハードウェア性能に関わらずレスポンス性能が大きく下がる問題のことです。この問題の原因はリクエストの処理方法にあります。ApacheなどのWebサーバーは1つのリクエストに対して1つのプロセスで処理を行います。そのためプロセス数の上限以上のリクエストを処理できないという問題を抱えています。 ↩︎

Discussion