#Webサーバとアプリケーションサーバ
unicornとnginxを説明するにあたって、まず知っておく必要がある知識の為、以下にまとめておきます。
Webサーバーとは
クライアント(ブラウザ)から送られてきたリクエストに応じたコンテンツをレスポンスとして返すものです。
しかし、リクエストに対してWebサーバ内で処理できるものとできないものがあります。
Webサーバ内で処理ができるものとは、データベースと通信せずに、
静的なコンテンツ(要求内容・人にかかわらずいつでも同じ結果を返すコンテンツ)のみをクライアントに返すものです。
Webサーバ内で処理ができないものとは、動的なコンテンツ(要求内容や要求する人に応じて異なる結果を返すコンテンツ)を生成し、リクエストとして返すものです。
リクエストに対してWebサーバ内で処理をすることができないと判断した場合は、
処理をアプリケーションサーバに依頼します。
アプリケーションサーバに動的コンテンツの生成を依頼し、生成されたコンテンツがレスポンスが返ってくるので、Webサーバはその結果をクライアントに返します。
アプリケーションサーバとは
Webサーバから受けたリクエストをもとに、バックエンドで動作するJavaやphp、Rubyなどを実行し、生成した動的コンテンツなど処理の結果をWebサーバに返します。
これらを踏まえてNginx、Unicornの説明に入ります。
Nginx(エンジンエックス)とは
Webサーバの一種です。フリーで使えるオープンソースのWebサーバですが、
特徴として__同時リクエストを多く処理することに特化している__事が挙げられます。
Nginxにはリバースプロキシ機能と呼ばれる機能がついており、
プロキシサーバーがリクエストをさばき、複数のWebサーバーにリクエスト処理を分散させることができます。(負荷分散)
Unicorn(ユニコーン)とは
アプリケーションサーバの一種で、Rackアプリケーション用サーバです。
NginxはRackアプリケーションサーバーと直接リクエスト、レスポンスのやりとりをすることができないので、両者を仲介する別のアプリケーションサーバーを立てる必要がある為、nginxと組み合わせて使うことが多いです。
参考URL
https://it-biz.online/it-skills/static-dynamic/
https://academy.gmocloud.com/qa/20160616/2761
https://chopesu.com/programing/aws