HTTP および HTTP コラボレーション Web サーバー アクセス フロー図

HTTP および HTTP コラボレーション Web サーバー アクセス フロー図

Web サーバーは、独立したドメイン名を持つ複数の Web サイトを構築できるほか、通信経路上のトランジット サーバーとして機能して伝送効率を向上させることもできます。

1. 単一の仮想ホストで複数のドメイン名を実装する

HTTP/1.1 仕様では、1 つの HTTP サーバーで複数の Web サイトをホストできます。

物理的にサーバーが 1 台しかない場合でも、仮想ホスト機能を使用することで複数のサーバーが存在することが想定されます。

インターネットでは、対象のウェブサイトにアクセスする前に、DNS サービスを通じてドメイン名が IP アドレスにマッピングされます (ドメイン名解決)。リクエストがサーバーに送信されると、すでに IP アドレスの形式でアクセスされていることがわかります。

したがって、サーバーが www.tricorder.jp と www.hackr.jp という 2 つのドメイン名をホストしている場合、リクエストを受信すると、どのドメイン名にアクセスするかを判断する必要があります。

読書ノート: HTTPのグラフィカルな説明 (V) HTTPと連携するWebサーバー

読書ノート: HTTPのグラフィカルな説明 (V) HTTPと連携するWebサーバー

仮想ホストは同じ IP アドレスで、異なるホスト名とドメイン名を持つ複数の Web サイトをホストできるため、HTTP リクエストを送信するときは、ホスト名またはドメイン名の URI を Host ヘッダーに完全に指定する必要があります。

2. 通信データ転送手順: プロキシ、ゲートウェイ、トンネル

これらのアプリケーションとサーバーは、通信回線上の次のサーバーに要求を転送し、そのサーバーからの応答を受信して​​クライアントに転送することができます。

①プロキシ:プロキシサーバーの基本的な動作は、クライアントからのリクエストを受信し、他のサーバーに転送することです。プロキシはリクエスト URI を変更せず、リソースを保持しているターゲット サーバーに直接送信します。リソース エンティティを保持するサーバーは、オリジン サーバーと呼ばれます。ソースサーバーから返された応答は、プロキシサーバーを通過した後、クライアントに送信されます。

読書ノート: HTTPのグラフィカルな説明 (V) HTTPと連携するWebサーバー

プロキシ サーバーを使用する理由としては、キャッシュ テクノロジを使用してネットワーク帯域幅のトラフィックを削減すること、組織内の特定の Web サイトへのアクセスを制御すること、アクセス ログを取得することを主な目的としていることなどが挙げられます。

プロキシを使用する方法はいくつかあります。

キャッシュプロキシ:

プロキシが応答を転送する場合、キャッシュ プロキシはリソースのコピーをプロキシ サーバーに事前に保存します。プロキシは同じリソースの要求を再度受信すると、元のサーバーからリソースを取得する代わりに、以前にキャッシュされたリソースを応答として返すことができます。

透過プロキシ:

要求または応答を転送するときにメッセージに対して何の処理も実行しないプロキシ タイプは、透過プロキシと呼ばれます。逆に、メッセージの内容を処理するプロキシは非透過プロキシと呼ばれます。

②ゲートウェイ:ゲートウェイの動作メカニズムはプロキシの動作メカニズムと非常に似ています。ゲートウェイにより、通信回線上のサーバーは HTTP 以外のプロトコル サービスを提供できるようになります。ゲートウェイを使用すると、クライアントとゲートウェイ間の通信回線で暗号化を使用して接続のセキュリティを確保できるため、通信のセキュリティを実現できます。

③ トンネル:トンネルは必要に応じて他のサーバーとの通信回線を確立し、SSLなどの暗号化方式を使用して通信を行うことができます。トンネルの目的は、クライアントがサーバーと安全に通信できるようにすることです。

トンネル自体は HTTP リクエストを解析しません。つまり、リクエストはそのまま後続のサーバーに転送されます。通信中の双方が切断するとトンネルは終了します。

読書ノート: HTTPのグラフィカルな説明 (V) HTTPと連携するWebサーバー

3. リソースを節約するためのキャッシュ

キャッシュは、プロキシ サーバーまたはクライアントのローカル ディスクに保存されているリソースのコピーです。キャッシュを使用すると、サーバーへのアクセスが削減され、通信トラフィックと通信時間が節約されます。

キャッシュ サーバーはプロキシ サーバーの一種であり、キャッシュ プロキシ タイプに分類されます。

読書ノート: HTTPのグラフィカルな説明 (V) HTTPと連携するWebサーバー

①キャッシュの有効期限

②クライアントキャッシュ

<<:  LinuxでRPMを使用してmysql5.7.17をインストールする

>>:  JavaScript WeakMap の使い方の詳しい説明

推薦する

MySQLでSQL文がどのように実行されるかの詳細な説明

概要最近MySQL関連の知識を勉強し始めました。学んだ知識ポイントと自分の理解を元に整理して共有しま...

W3C チュートリアル (13): W3C WSDL アクティビティ

Web サービスは、アプリケーション間の通信に関係します。 WSDL は、XML ベースの Web ...

mysql 実行プラン ID が空である (UNION キーワード) の詳細な説明

導入作業プロセス中に、遅いクエリが調整されることがあります。 MySQL SQL ステートメントのチ...

MySQL はどのようにしてマスターとスレーブの同期を実現するのでしょうか?

マスタースレーブ同期 (マスタースレーブレプリケーションとも呼ばれる) は、マスタースレーブデータの...

MySQL 8.0 の新機能 - 管理ポートの使用の概要

目次序文接続管理追加の接続管理ポート要約する序文皆さんの多くは、次のようなエラー メッセージに遭遇し...

シェルスクリプトを使用したMySQLデータベースの自動バックアップ

シェルスクリプトを使用したMySQLデータベースの自動バックアップデータベースを頻繁にバックアップす...

CSS と JS を使用して下線効果を実装する方法の例

この記事では、主に 2 種類の下線の動的効果について説明します。1 つ目は、ホバーすると X 軸が内...

HTML で中国語を UTF-8 に変換する方法

HTMLでは、中国語のフレーズ「學好好學」は「學好好學」と表現できます。プロジェクトでは、SMSアラ...

jQuery における Ajax の関連知識ポイントのまとめ

序文JavaScriptを学ぶ学生は、 AJAX (非同期JavaScriptとxml) 変換は非同...

「いいね!」機能では MySQL と Redis のどちらを使用すればよいでしょうか?

目次1. 初心者が陥りがちな間違い2. Iteratorのremove()メソッドを使用する3. f...

Docker 構成コンテナの場所とヒントのまとめ

Docker の使用に関するヒント1. 停止したDockerコンテナをすべてクリーンアップする停止し...

jsネイティブカルーセルプラグインの制作

この記事では、jsネイティブカルーセルプラグインの具体的なコードを参考までに共有します。具体的な内容...

jsはシンプルな英語-中国語辞書を実装します

この記事では、参考までに、簡単な英中辞典を実装するためのjsの具体的なコードを紹介します。具体的な内...

ドメイン名を nginx サービスにバインドする方法

nginx.conf で複数のサーバーを設定します。 http リクエストを処理する際、nginx ...

HTML でフォーム入力やその他のテキスト ボックスを読み取り専用にして編集不可にする方法

場合によっては、フォーム内のテキスト ボックスを読み取り専用にして、ユーザーがその中の情報を変更でき...