このページでは、IT初心者向けに「Webサーバって何?」「Webサーバはどんな役割を担う?」「Webサーバでできることは何?」という疑問にお答えします。
目次
Webサーバとは?
Webサーバとは、インターネット上でWebページをホストし、公開するためのコンピュータシステムのことを指します。
Webサーバという言葉は、物理的なハードウェア(例:コンピュータ)を指す場合もあり、また同時にクライアント(通常はウェブブラウザ)からのリクエストに応じて、HTML、画像、スクリプトなどのウェブコンテンツを提供するサービスプログラム(例:Apache, Nginx)自体を指す場合もあります。
例えば、あなたがWebブラウザ(例:Google Chrome, Firefox, Safariなど)を使ってwww.example.comというWebサイトを見ようとしたとき、その情報はどこから来るか。
その答えになるのが「Webサーバ」です。
あなたがGoogleの検索結果をクリックすると(=Webサイトの閲覧要求を投げると)、要求を受け取ったWebサーバはWebサイトのデータをあなたのコンピュータやスマートフォンに送信します。その結果、あなたはWebブラウザでそのWebサイトを見ることができるという仕組みです。
という説明だけではピンと来なかった方は、そもそも「サーバとは何か?」について以下のコラムをご覧ください。
【前提】サーバとは?(クライアントサーバシステムとは?)
サーバーとは何かしらの情報やサービスを提供するコンピュータのこと。つまり、あなたが今お使いのノートパソコンも、他のノートパソコンに情報を提供するために利用できるようにすればサーバーと呼ぶことができます。
サーバーと言うと、大きな黒色の物体を思い浮かべてしまいがちですが、実はこれは半分正解で半分間違い。あくまでも、何らかの情報やサービスを提供するコンピュータであれば、それはサーバーと呼んでしまってOKです。
Webサーバーとか、メールサーバーとか、データベースサーバーといっても、究極的にはただのコンピュータ。このコンピュータに、Webの機能を備えたソフトウェアをインストールしたものをWebサーバーと呼び、データベースの機能を備えたソフトウェアをインストールしたものとデータベースサーバーと呼んでいるだけです。
そして、このサーバ達は他の様々な種類のサーバとの相互に通信を行うことによって1つのシステムを構成することが一般的です。Webアプリケーションの場合は、システムを「①:見た目の部分」「②:機能の部分」「③:データの部分」の3階層に分けてサーバを構成するのが主流で、これは3層アーキテクチャと呼ばれます。
3層アーキテクチャについて理解することができると、自然とWebサーバって何?という疑問が解消するはずです。
Webサーバの仕組みと特徴
WebサーバはWebコンテンツのホスティングと提供に特化したシステムであり、その設計と機能は主にHTTP(HyperText Transfer Protocol)というプロトコルを基にしています。以下に、その主な特徴をいくつかご説明します。
HTTP/HTTPSのサポート
Webサーバは、HTTPまたはHTTPS(HTTP Secure)といったプロトコルを使ってクライアント(通常はWebブラウザ)と通信を行います。これらのプロトコルはWebページの送受信のためのルールや手順のセットで、Webサーバとクライアント間のコミュニケーションの基盤となっています。
リクエスト/レスポンスモデル
Webサーバはクライアントからのリクエストを受け取り、適切なレスポンスを返すことで動作します。
クライアントが特定のURLにアクセスすると、Webサーバはそれに対応するHTML文書やその他の関連ファイル(CSS、JavaScript、画像ファイルなど)をクライアントに送り返します。この一連の通信をHTTP/HTTPSで行うのがWebサーバの特徴の1つです。
静的と動的コンテンツの提供
Webサーバは、基本的には静的なHTML文書を提供しますが、CGI(Common Gateway Interface)、PHP、JavaScript、ASP.NETなどのサーバーサイド技術を用いることで動的なコンテンツも提供できます。動的なコンテンツは、ユーザーのアクションやデータベースの内容に応じて変化するWebページを指します。
ログ記録
Webサーバはアクセスログを記録します。
これは誰がどのページにアクセスしたか、いつアクセスしたか、どのブラウザやOSを使っているかなどの情報を含んでいます。これらの情報は、Webサイトの利用状況の分析やトラブルシューティングに役立ちます。
Webサーバで利用される代表的なソフトウェア
ここまでは、どちらかというと物理的なハードウェア(例:コンピュータ)としての「Webサーバ」を解説してきました。
ここからは、より具体的にWebページの送受信を処理するソフトウェア(例:Apache, Nginx)を念頭にその仕組みをご説明していきます。
Apache HTTP Server (Apache)
Apacheは、世界で最も広く使用されているWebサーバソフトウェアの1つ。
HTTPプロトコルを使用してクライアント(主にウェブブラウザ)からのリクエストを受け取り、レスポンス(通常はHTMLドキュメントやその他のウェブファイル)を返すソフトウェアのセットがApacheだと理解してOKです、
Apacheソフトウェア財団によって開発・メンテナンスされています。Apacheは、オープンソースであり、その機能はモジュール化されているため、ユーザーが必要な機能を選択して追加、あるいは削除することができます。この柔軟性と高度なカスタマイズ可能性が、Apacheの大きな特長です。しかし、Apacheはリクエストごとに新しいプロセスまたはスレッドを生成するため、高負荷状態ではパフォーマンスが低下しやすいという欠点もあります。
Nginx
Nginx (発音 “エンジンエックス”) は、特に同時に大量のリクエストを効率的に処理することを目指して設計されたWebサーバソフトウェアです。
NginxもApacheと同じようにWebサーバとしての基本的な役割を担うという点は全く同じです。そのうえで、大量の同時接続を効率的に処理する必要がある場合、イベント駆動型アーキテクチャを持つNginxが優れている選択と言えるというような点で差異があります。
「イベント駆動型アーキテクチャ」は、リクエストごとに新しいプロセスやスレッドを生成する代わりに、既存のワーカープロセスを再利用します。これにより、NginxはApacheよりも同時接続に対して効率的であるとされています。また、Nginxはリバースプロキシやロードバランサーとしても広く使われています。
Internet Information Services (IIS)
IISは、Microsoftが開発・提供するWebサーバソフトウェアで、Windows Serverオペレーティングシステム上で動作します。
IISは、.NETアプリケーションのホスティングを強化するための機能が含まれており、Windows環境での動作が主となります。
Google Web Server (GWS)
GWSは、Googleが自社製のWebサービスに使用するためにカスタムビルドしたWebサーバソフトウェアです。
その詳細な機能やアーキテクチャは公開されていませんが、Googleのスケールに対応できるように高度に最適化されていることがわかっています。
それぞれのWebサーバソフトウェアは特定のシナリオや要件に最適化されています。Apacheはその柔軟性とカスタマイズ可能性で知られ、一方Nginxは高負荷状態でのパフォーマンスとスケーラビリティで優れています。
一方、IISは特にWindows環境や.NETアプリケーションでの使用が想定されており、GWSについてはGoogleのような大規模なウェブサービスを支えるために特化して設計されているという点で異なりますが、基本的なWebサーバとしての役割を担うという点ではどれも同じです。
チェックテスト
チェックテストを確認する
Webサーバーに対する説明として下記の中から正しい番号をお一つお選びいただきdiscordで番号を共有ください。
①Webサーバはリクエストからのクライアントを受け取り、適切なレスポンスを返すことで動作します。
②Webサーバはクライアントからのリクエストを受け取り、適切なレスポンスを返すことで動作します。
③Webサーバはリクエストからのレスポンスを受け取り、適切なクライアントを返すことで動作します。
④Webサーバはクライアントからのレスポンスを受け取り、適切なリクエストを返すことで動作します。