「プロになるためのWeb技術入門」を読んだ。Webサーバとアプリケーションサーバ

Webサーバ

Apache、nginx 、IISとか。

何してる?

webサーバとアプリケーションサーバを連携させる場合、
通常のHTMLやCSS、JS、画像、動画など、静的コンテンツのみで構成されるページはwebサーバ上に配置し、
動的な処理が必要な場合にアプリケーションサーバへリクエストを送り、受け取った結果をWebブラウザに返す。


アプリケーションサーバ

Javaアプリケーションサーバ
TomcatGlassFish

Ruby on Rails環境のアプリケーションサーバ
Unicorn、Thin、Rainbows、Puma、

何してる?

アプリケーションサーバはWebサーバから受け取ったリクエストをもとに、JavaphpRubyなどを実行し、Webサーバに結果を返す。

参考: Rails開発におけるwebサーバーとアプリケーションサーバーの違い(翻訳) - Qiita

まとめると

簡単にいうと、
HTTPリクエストをいったん、webサーバが窓口となって受け取り、URL内のパスによってはアプリケーションサーバへの処理をお願いしてしまおうということ。


webサーバとアプリケーションサーバの分担

一般的にwebサーバより、アプリケーションサーバの方が仕事量が多くなる。
それは、webサーバはHTTPリクエストでしてされたファイルをWebブラウザに返すだけでよいが、アプリケーションサーバでは、様々な処理を行うため。

これらの異なるノードに配置すると、軽い処理で回数の多い静的コンテンツのリクエストはwebサーバに、回数が少なく処理の思い動的コンテンツへのリクエストはアプリケーションサーバへと、異なる性格のリクエストをうまく分担できる。


ん?PHPアプリケーションサーバないの?

Apacheにはモジュールを追加することでアプリケーションサーバの役割を持てるようになります。
まだちゃんと理解してないが、mod_php というモジュールを使って、 「Apache のプロセス内で PHP を処理する」みたいな感じで理解した。 それだけではないようだけど。

参考:PHP - 「Apache」はアプリケーションサーバーとしての機能もあるのでしょうか?|teratail