Webサーバーとは
- クライアントのWebブラウザ等とHTTP通信規格にしたがって、データの受け渡しを行う役割を果たすPCのこと。
- HTTP通信については、後述
Webサーバーソフトウェアの種類
No. | Webサーバーソフトウェア名 | 概要 | 主な言語 |
---|---|---|---|
1 | Apache HTTP Server | ・世界中で最も使用されているソフトウェア。 ・Apacheライセンスというオープンソースのソフトウェア。MPM(マルチ プロセッシング モジュール)の仕組みを持っている為、複数OSをサポートできる。 ・Unix系では、3つのMPM(prefork、worker、event)を利用できる為、プロセス・スレッドの挙動を切り分けることが可能。 |
PHPなど |
2 | IIS(Internet Information Services) | ・Microsoft 謹製のソフトウェア。Windows標準。 ・Webサーバーの機能以外に、FTP、SMTP、NNTPの機能をサポート。 ・2018年10月時点の最新バージョンはIIS 10.0である。(Windows 10 と Windows Server 2016 に付属) |
ASP.NET |
3 | nginx | ・エンジンエックスと読む。 ・BSDライクライセンス(「無保証」であることの明記と著作権およびライセンス条文自身の表示を再頒布の条件とする。) ・HTTP, HTTPS, SMTP, POP3, IMAPのリバースプロキシ、ロードバランサ、HTTPキャッシュ、ウェブアプリケーション用インターフェース(FastCGI, uWSGI, Phusion Passengerなど)などの機能を持つ ・静的コンテンツの処理が高速。 ・リバースプロキシの機能を持つため、背後にWebアプリケーションサーバを配置して動的なコンテンツを配信したり、ソフトウェアロードバランサやHTTPキャッシュとしても使うこともできる。 ・Apache HTTP Serverがリクエストの処理にデフォルトでスレッドやプロセス指向のアプローチを用いている一方で、nginxは非同期のイベント駆動アプローチを用いている。 ・イベント駆動によるアプローチは、高負荷下において、より予測可能なパフォーマンスを提供すると考えられている |
PHPなど |
Webアプリケーションサーバーとの違い
-
Webサーバーの挙動
- 受け取ったリクエストに応じて、Webアプリケーションサーバーに対して処理を依頼して、処理結果を受け取ります。その結果をクライアント側にレスポンスとして返します。
-
Webアプリケーションサーバーの挙動
- Webサーバーから依頼された処理をPHP、Javaなどのプログラム言語で実施、処理結果をWebサーバーに返します。
-
Webサーバーは、リクエストに対して、実処理を行わない。WebアプリケーションサーバーはWebサーバーの依頼を受けて、実処理を行い、結果を返す。
-
レストランで例えるのであれば、
- 客(クライアント)がウェイター(Webサーバー)に「オムライスが欲しい」という注文(リクエスト)を投げる
- ウェイター(Webサーバー)が厨房の調理師(Webアプリケーションサーバー)に「オムライスを料理して欲しい」という依頼を投げる
- 厨房の調理師(Webアプリケーションサーバー)がオムライスを料理して、ウェイター(Webサーバー)に渡す
- ウェイター(Webサーバー)が客(クライアント)にオムライスを提供する(レスポンス)
-
ちなみにWebアプリケーションサーバーのソフトとして以下が有る。
- Tomcat:Java
- GlassFish:Java
- IIS(Webアプリケーションサーバーとしての機能も持つ):C#、VB.NETなど
- Unicorn:RoR
- Puma:RoR
HTTP通信とは
- クライアントはWebサーバーに対して要求(HTTPリクエスト)を送る。Webサーバーは要求(HTTPリクエスト)に対する応答(HTTPレスポンス)を返す。
- クライアントは受け取った応答をWebブラウザ等に表示する。
- 例:クライアントがWebブラウザ等で右記のページを表示するとき: http://www.hoge.co.jp/foo.html
- 要求(クライアント→Webサーバー「hoge.co.jp」)
- 「foo.html」のページのデータを送って欲しい
- 応答(Webサーバー「hoge.co.jp」→クライアント)
- 「foo.html」のページのデータを送る
- 要求(クライアント→Webサーバー「hoge.co.jp」)