Webサーバ (ウェブサーバ、英:Web server )は、HTTP に則り、クライアント ソフトウェア のウェブブラウザ に対して、HTML やオブジェクト(画像 など)の表示を提供するサービスプログラム及び、そのサービスが動作するサーバ コンピュータ を指す。
広義には、クライアントソフトウェアとHTTPによる通信を行うプログラム及びコンピュータ。
実装
クライアントであるウェブブラウザ のURL にて指示された、Webサーバ内に存在するHTMLドキュメントの各種情報を、クライアントから接続されたHTTPに則ったTCP/IP ソケット ストリーム(HTTPコネクションと呼ぶ)に送信する。多くの場合、クライアントのウェブブラウザとの間に複数のコネクション を張り、HTMLドキュメントとその配下の個々の情報ファイル(画像ファイル情報など)を並列して送り、処理時間を短縮してサービスを提供している。
また、HTMLドキュメントに各種処理を組み込み、CGI スクリプト やJava Servlet (サーバ側で実行されるJava プログラム)と呼ばれるWeb画面に連動した動的処理を行う事が可能である。CGI処理においてはPerl ・Ruby ・PHP などのスクリプト言語 によって開発されることが多い。
Java Servletにおいては、Javaによる動的処理の負荷を分散するため、Java Servletを処理する機能を別サーバに切り出し、Webアプリケーションサーバとして、垂直分散(スケールアウト)する事も一般化している。
大規模なWebサービスを提供する場合、同じサービスを提供するWebサーバを並列して設置し、ロードバランサ と呼ばれる各種ロジック(ラウンドロビン方式 や処理中の負荷を計測して割り当てるサーバを決定するものや、サーバの性能を考慮して重み付けをする方式などが存在する)によりWebサーバへの処理を振り分ける装置を、Webサーバ群の前に置く事が多い。
これにより、Webサービスを提供する際のサーバ故障に対する可用性・信頼性を確保する(疎結合クラスター の一種と定義される)。
また、不特定多数のウェブブラウザ(クライアント)との接続を行うため、一般的にWebサーバ及びWebアプリケーションサーバにはDNS サーバとの連動設定を組み込む。
歴史
サン・マイクロシステムズ のSOHO向けWebサーバ Sun Cobalt Qube 3(2002年)
2015年時点においては、Apache及びその派生版である各ベンダのHTTP Serverが市場の4割、マイクロソフト のIIS が市場の3割、nginx が2割弱を占める[ 1] 。2024年時点では、nginxが40%、Apacheが25%、Microsoftが10%弱となっている[ 2] 。
元々、WebサーバはUNIX 上で開発され発展してきた経緯もあり、当初からオープン系 サーバと言われるUNIXサーバやWindows 系サーバにより実装・提供されるのが普通である。ただし、システム構成上の都合により、HTTP やFTP 、TCP/IP が利用可能な汎用コンピュータ にて動作させる場合もある。
現在の代表的な実装
The LAMP software bundle (here additionally with Squid ). A high performance and high-availability solution for a hostile environment
他
歴史上の実装
Tux Web Server
Tux Web Server(英語版 )はかつて存在した HTTP サーバの実装であり、Linuxカーネル へのパッチとして書かれていた。静的なコンテンツのみを提供することと、カーネル層で動作することから、一般的なウェブサーバより高速と言われていた[ 3] 。開発者は Red Hat のカーネルハッカー Ingo Molnár で、当初のバージョンは Red Hat Linux 6.2 および 7.0 向けにリリースされた[ 4] 。カーネル内で動作し、ストレージとネットワークの双方に対してゼロコピー (英語版 ) の入出力を行うことができた[ 5] [ 6] 。2009年頃にはその役目を終え、もはや保守されなくなっていた[ 7] 。別名 Content Accelerator とも呼ばれていた[ 8] 。
個別の製品の特徴
Oracle HTTP Server(英語版 )
RDBMS ベンダであるオラクル が提供するWebサーバ (Oracle HTTP Server) においては、Java EE を使用したWebアプリケーションサーバ と連携して、HTMLドキュメント内にデータベースに検索を行わせるためのSQL 文を直接記述し、データベースからデータをHTMLベースで呼び出して加工する事が可能となっている。
脚注
出典
関連項目