Varnish Cache + NGINX リバース プロキシの仕組み

公開: 2022-08-09

この記事では、Varnish キャッシュ NGINX リバース プロキシとその設定方法について説明します。

HTTP キャッシングに重点を置いたプロキシ サーバーは Varnish です。 これは HTTP アクセラレータとして作成されており、Apache または NGINX Web サーバーのリバース プロキシとして機能する場合があります。 トラフィックが多く、注目度が高い Web サイトは、Varnish を実装しています。

目次

ニスキャッシュとは何ですか?

Web ベースの企業にとって、キャッシュは多くの場合、最も重要なソフトウェアです。 Varnish Cache は、強力なオープンソースの HTTP エンジン/リバース HTTP プロキシであり、その名前が示すとおり、訪問者が初めて Web ページを表示したときに Web ページのコピーをキャッシュ (または保存) します。 これにより、Web サイトが最大 1000% 高速化される可能性があります。 Varnish は、ページをキャッシュするためにサーバーに単一のリクエストを行い、その後、同じページに対する後続のリクエストを処理します。 これにより、コンテンツ配信が非常に高速になり、バックエンド サーバー リソースの需要が減少します。

  • Varnish のコア コンピテンシーは、スピードとパフォーマンスです。
  • サーバー インフラストラクチャの節約
  • スケーラビリティ - Varnish を使用すると、訪問者やリクエストの量に関係なく、サイトが需要を満たすことができます。
  • 停止からの保護: サーバーがクラッシュしても、Varnish はキャッシュされた情報を提供し続けます。
  • 柔軟性: Varnish Configuration Language (VCL) を使用すると、特殊なソリューション、ルール、およびモジュールを作成できます。
  • 強化されたユーザー エクスペリエンス

Varnish Cache はどのように機能しますか?

それらが Web サーバーのバックエンドに到達する前に、Varnish はすべての着信要求を処理します。 そのキャッシュはすべての Web トラフィックを処理し、デフォルトでは 2 分ごとに更新されます。

ワニス キャッシュ Nginx リバース プロキシ

リクエストがキャッシュされていない場合、一般的なリバース プロキシの段落で見たように、Varnish はリクエストを Web サーバーのバックエンドにルーティングし、結果をキャッシュします。

要求がキャッシュされると、要求はメモリに格納され、すぐに取得して顧客に送信できます。 Varnish は VCL 言語を使用して、設定、キャッシュ ポリシー、およびその他のルールを表現します (Varnish Configuration Language)。

この言語とそのバリエーションを使用して、各要求に異なる方法で応答できます。 たとえば、特定のリクエストを特定のバックエンドに送信したり、着信リクエストまたはその結果の特性に基づいて異なるアクションを実行するように Varnish に指示したりできます。

キャッシュされた素材は、Web サーバーが利用できない場合でも提供される場合があります。これは、Varnish のもう 1 つの素晴らしい機能であるバックエンド ポーリングと呼ばれる組み込み機能のためです。 Varnish は、ダウンタイムを検出した場合、猶予時間と呼ばれる時間枠の間、キャッシュされたコンテンツを提供し続けます。 バックエンド ポーリングは、柔軟に設定できる頻度でサーバーにクエリを実行します。

Nginxとは何ですか?

NGINX は、ビデオ ストリーミング、キャッシング、リバース プロキシ、Web サービス、およびその他の機能に使用できるオープン ソース ソフトウェアです。 もともとは、最高の速度と信頼性のために構築された Web サーバーとして始まりました。 NGINX は、HTTP サーバーとしての機能に加えて、HTTP サーバー、電子メール プロキシ サーバー (IMAP、POP3、および SMTP)、リバース プロキシ、および HTTP、TCP、および UDP サーバーのロード バランサーとして動作する場合があります。

リバース プロキシとは

リバース プロキシの主な機能は、受信トラフィックから Web サーバーを保護することです。 各接続要求はリバース プロキシによって受信され、要求を処理したサーバーに接続する前に多くのサーバーを経由して転送されます。

各リバース プロキシ操作には、次の 3 つの主要なフェーズがあります。

  1. 接続要求の収集: ネットワークの端では、リバース プロキシが着信要求を受け入れます。
  2. TCP 3 ウェイ ハンドシェイク: TCP 3 ウェイ ハンドシェイクの後にリバース プロキシへの接続が作成され、最初の接続が閉じられます。
  3. オリジン サーバー接続: 架空の IP アドレスを使用して、リバース プロキシはオリジン サーバーをクライアント要求に接続します。

Web アプリへのすべての Web ブラウザー接続は常にリバース プロキシ経由で行われるため、ユーザーがオリジン サーバーに直接接続することはできません。

Varnish キャッシュ Nginx リバース プロキシを設定するにはどうすればよいですか?

サーバーに Nginx をインストールする

まず、 aptコマンドを使用して Ubuntu リポジトリから Nginx をインストールする必要があります。

 sudo apt update apt install nginx -y

インストールが完了したら、 systemctlコマンドを使用して、システムの起動時に毎回 Nginx を起動して起動できるようにする必要があります。

 systemctl start nginx systemctl enable nginx

ポート 88 で Nginx を構成する

Nginx をセットアップして、従来とは異なる HTTP ポート 8080 を操作に使用します。 これを行うには、"sites-available" ディレクトリにある仮想ホスト ファイルを変更する必要があります。

 nano /etc/nginx/sites-available/default

「listen」行の値を 8080 に変更します。保存して終了します。

今すぐ Nginx の設定をテストして、エラーを確認してください。 その後、サービスを再起動します。

 nginx -t systemctl restart nginx

netstatを使用してもう一度 Nginx をチェックし、型にはまらない HTTP ポート 8080 で動作していることを確認します。

 netstat -plntu

これはインストール済みで、ポート 8080 は現在 Nginx Web サーバーによって使用されています。

Ubuntu にワニスをインストールする

aptコマンドを使用してワニスをインストールする必要があります

sudo apt install varnish -y

以下にリストされているsystemctlコマンドを使用して、varnish を開始し、システムの起動時に自動的に開始するように設定します。

 systemctl start varnish systemctl enable varnish

デフォルトでは、varnish は管理 Web インターフェイスにポート 6082 を使用し、パブリック アクセスにポート 6081 を使用します。 netstatコマンドを使用して特定のポートがリストされていることを確認してください。

 netstat -plntu

Varnish HTTP アクセラレータがインストールされました

Nginx のリバース プロキシとして Varnish を構成する

Nginx Web サーバーのリバース プロキシとして、Varnish が使用されます。 Nginx Web サーバーは HTTP ポート 8080 で動作し、Varnish は HTTP ポート 80 で動作します。

このフェーズでは、Nginx 用に Varnish をセットアップし、バックエンド サーバーを特定し、HTTP ポート 80 をデフォルト ポートとして使用するように Varnish を変更します。

すぐにワニス構成ディレクトリに移動して、「default.vcl」ファイルを編集します。 ホストが127.0.0.1で、ポートが8080であることを確認してください

nano /etc/varnish/default.vcl

バックエンドの設定が完了しました。

次のステップは、HTTP ポート 80 を使用するように Varnish をセットアップすることです。「/etc/default」ディレクトリの「varnish」ディレクトリに移動して、varnish 構成ファイルを編集します。

 nano /etc/default/varnish

デフォルトのポートが 6081 で、HTTP ポートが 80 であることを確認してください

「/lib/systemd/system」ディレクトリのワニス サービス ファイルを編集する必要があります。 systemd システム ディレクトリに移動して、varnish.service ファイルを編集します。

 cd /lib/systemd/system nano varnish.service

「ExecStart」行の HTTP ポート 80 をワニス ポート 6081 に置き換えます。

systemd設定をリロードして、ニスを再起動します。

 systemctl daemon-reload systemctl restart varnish

netstatコマンドを使用してワニスを確認する

netstat -plntu

Nginxのリバースプロキシとしてのワニスの設定が完了しました

UFW ファイアウォールを構成する

Ubuntu オペレーティング システムのデフォルトの人間が判読できるファイアウォールは、「UFW」と呼ばれます。 パッケージをまだ持っていない場合は、以下に示す apt コマンドを使用してインストールします。

 sudo apt install ufw

ファイアウォールを有効にして、新しい SSH、HTTP、および HTTPS ポートを開きます。

以下にリストされている ufw コマンド。

 ufw allow ssh ufw allow http ufw allow https

ここで、ファイアウォールをオンにして、起動時に常に起動するようにします。

 ufw enable

UFW ファイアウォールがアクティブになったので、HTTP ポートと HTTPS ポートの両方が外部ネットワークから到達可能です。