Varnish Cache(一般にVarnishと呼ばれる)は、モダンなアーキテクチャと柔軟な構成言語を備えたオープンソースの強力で高速なリバースプロキシHTTPアクセラレータです。リバースプロキシとは、単純に言えば、Nginxのような(オリジンサーバーまたはバックエンドと呼ばれる)ウェブサーバーの前に展開できるソフトウェアで、クライアントのHTTPリクエストを受け取り、オリジンサーバーに転送して処理を行い、その応答をクライアントに返すことを意味します。
Varnishは、Nginxとクライアントの間に立っていますが、いくつかのパフォーマンス上の利点があります。その主な目的は、キャッシュエンジンとして動作し、アプリケーションの読み込み速度を向上させることです。クライアントからのリクエストを受け取り、リクエストされたコンテンツをキャッシュして(ファイルやファイルの断片をメモリに保存して)、今後は完全に同じコンテンツの要求があった場合にはすべてキャッシュから提供されます。
これにより、Webアプリケーションの読み込み速度が向上し、間接的にWebサーバー全体のパフォーマンスも向上します。なぜなら、Varnishがストレージディスクからファイルを処理するNginxの代わりにメモリからコンテンツを提供するからです。
キャッシュ以外にも、Varnishには、HTTPリクエストルーターやロードバランサー、Webアプリケーションファイアウォールなど、いくつかの他の使用例があります。
ワニスは、着信リクエストの処理方法に関するポリシーを記述することを可能にする高度に拡張可能な組み込みワニス構成言語(VCL)を使用して構成されています。これを使用して、カスタマイズされたソリューション、ルール、およびモジュールを構築できます。
この記事では、新しいCentOS 8またはRHEL 8サーバーにNginxウェブサーバーとVarnish Cache 6をインストールする手順について説明します。RHEL 8ユーザーは、Red Hat サブスクリプションを有効にする必要があります。
LEMPスタックをインストールする代わりにNginxウェブサーバーだけをインストールする場合は、次のガイドを参照してください。
ステップ1:CentOS/RHEL 8にNginxウェブサーバーをインストール
1. CentOS/RHEL 8は、最新バージョンのNginxウェブサーバーソフトウェアが搭載されているため、デフォルトリポジトリから以下のdnfコマンドを使用してインストールします。
# dnf update # dnf install nginx
2. Nginxをインストールしたら、以下のsystemctlコマンドを使用して起動、有効化、ステータスを確認する必要があります。
# systemctl start nginx # systemctl enable nginx # systemctl status nginx

3. 少し興味がある場合は、デフォルトでポート80で実行されるNginx TCPソケットを以下のssコマンドを使用して確認することもできます。
# ss -tpln

4. システムでファイアウォールを実行している場合は、ウェブサーバーへのリクエストを許可するためにファイアウォールルールを更新する必要があります。
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --reload
ステップ2:CentOS/RHEL 8にVarnish Cache 6をインストールする
5. CentOS/RHEL 8には、デフォルトでバージョン6.0 LTS(長期サポート)を含むVarnish Cache DNFモジュールが提供されています。
モジュールをインストールするには、以下のコマンドを実行してください。
# dnf module install varnish

6. モジュールのインストールが完了したら、システムにインストールされている Varnish のバージョンを確認できます。
# varnishd -V

7. Varnish Cache をインストールした後、メインの実行可能コマンドは /usr/sbin/varnishd にインストールされ、varnish の設定ファイルは /etc/varnish/ にあります。
ファイル /etc/varnish/default.vcl は、VCL を使用して書かれたメインの varnish 設定ファイルであり、/etc/varnish/secret は varnish シークレットファイルです。
8. 次に、Varnish サービスを起動し、システムの起動時に自動的に起動するように設定し、正常に動作していることを確認します。
# systemctl start varnish # systemctl enable varnish # systemctl status varnish

ステップ 3: Nginx を Varnish Cache と連携させる
9. このセクションでは、Varnish Cache を Nginx の前で実行する方法を示します。デフォルトでは、Nginx はポート 80 でリッスンしており、通常、すべてのサーバーブロック(または仮想ホスト)がこのポートでリッスンするように構成されています。
たとえば、メインの設定ファイル(/etc/nginx/nginx.conf)に構成された デフォルトの nginx サーバーブロック を見てみてください。
# vi /etc/nginx/nginx.conf
以下のスクリーンショットに示されているサーバーブロックセクションを探してください。

10. VarnishをNginxの前に実行するには、デフォルトのNginxポートを80から8080(または任意の他のポート)に変更する必要があります。
これは、Varnishを介して提供したいサイトやWebアプリケーションのすべての将来のサーバーブロック構成ファイル(通常は/etc/nginx/conf.d/で作成されます)で行う必要があります。
例えば、テストサイトtecmint.lan
のサーバーブロックは/etc/nginx/conf.d/tecmint.lan.confにあり、次の構成を持っています。
server { listen 8080; server_name www.tecmint.lan; root /var/www/html/tecmint.lan/; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }

重要: デフォルトのサーバーブロックの設定セクションをコメントアウトして無効にすることを/etc/nginx/nginx.confファイルで示されるスクリーンショットのように行うことを忘れないでください。これにより、サーバー上で他のウェブサイト/アプリケーションを実行できるようになります。そうでないと、Nginxは常にデフォルトのサーバーブロックにリクエストを送ります。

11. 構成が完了したら、構成ファイルにエラーがないかを確認し、最近の変更を適用するためにNginxサービスを再起動してください。
# nginx -t # systemctl restart nginx

12. 次に、クライアントからのHTTPリクエストを受信するために、Varnishをポート80で実行する必要があります。以前のVarnish Cacheのバージョンでは、この変更はVarnishの環境ファイルで行われましたが(これは今は非推奨です)、バージョン6.0以降。
必要な変更をVarnishサービスファイルで行う必要があります。適切なサービスファイルを編集するために次のコマンドを実行します。
# systemctl edit --full varnish
指定された行を見つけて、リッスンアドレスとポートを指定する-a
スイッチの値を変更します。ポートを80に設定して、次のスクリーンショットに示すようにします。
アドレスを指定しない場合、varnishdはサーバー上でアクティブなすべての利用可能なIPv4およびIPv6インターフェースでリッスンします。
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

ファイルの変更を保存して終了します。
13.次に、Varnishがコンテンツをフェッチするために訪れるバックエンドサーバーを定義する必要があります。これはVarnishメイン設定ファイルで行います。
# vi /etc/varnish/default.vcl
デフォルトのバックエンド設定セクションを探して、“default”という文字列をserver1(またはオリジンサーバーを表す任意の名前)に変更します。次に、ポートを8080(またはサーバーブロックで定義したNginxリッスンポート)に設定します。
backend server1 { .host = "127.0.0.1"; .port = "8080"; }

このガイドでは、VarnishとNginxを同じサーバーで実行しています。Nginxウェブサーバーが別のホストで実行されている場合。たとえば、アドレス10.42.0.247の別のサーバーでは、示されているように.host
パラメーターを設定します。
backend server1 { .host = "10.42.0.247"; .port = "8080"; }
ファイルを保存して閉じます。
14.次に、Varnishサービスファイルの最近の変更のためにsystemdマネージャー設定をリロードし、変更を適用するためにVarnishサービスを再起動する必要があります。
# systemctl daemon-reload # systemctl restart varnish
15.次に、NginxとVarnishが設定されたTCPソケットでリッスンしていることを確認します。
# ss -tpln

ステップ4:Nginx Varnish Cacheセットアップのテスト
16.次に、次のスクリーンショットに示すように、ウェブページがVarnish Cacheを介して提供されていることを確認します。ウェブブラウザを開き、サーバーのIPまたはFDQNを使用してナビゲートします。
http://www.tecmin.lan OR http://10.42.0.144

17.または、次に示すようにcurlコマンドを使用します。サーバーのIPアドレスまたはウェブサイトのFQDNを使用するか、テストをローカルで行う場合は127.0.0.1またはlocalhostを使用します。
# curl -I http:///www.tecmint.lan

役立つVarnish Cache管理ユーティリティ
18.この最後のセクションでは、Varnish Cacheが提供する便利なユーティリティプログラムのいくつかについて、varnishdを制御したり、インメモリログや全体の統計などにアクセスしたりする方法を簡単に説明します。
varnishadm
varnishadmは、実行中のVarnishインスタンスを制御するためのユーティリティです。varnishdへのCLI接続を確立します。たとえば、次のスクリーンショットに示すように、構成されたバックエンドをリストアップするために使用できます(詳細についてはman varnishadmを参照してください)。
# varnishadm varnish> backend.list

varnishlog
varnishlogユーティリティは、リクエスト固有のデータへのアクセスを提供します。特定のクライアントやリクエストに関する情報を提供します(詳細についてはman varnishlogを参照してください)。
# varnishlog

varnishstat
A varnishstat also known as varnish statistics, which gives you a glance at Varnish’s current performance by providing access to in-memory statistics such as cache hits and misses, information about the storage, threads created, deleted objects (read man varnishstat for more information).
# varnishstat

varnishtop
A varnishtop utility reads the shared memory logs and presents a continuously updated list of the most commonly occurring log entries (read man varnishtop for more information).
# varnishtop

varnishhist
A varnishhist (varnish history) utility parses the varnish logs and outputs a continuously updated histogram showing the distribution of the last n requests by their processing (read man varnishhist for more information).
# varnishhist

それでは以上です!このガイドでは、Varnish Cacheをインストールして、Nginx HTTPサーバーの前で実行し、CentOS/RHEL 8でウェブコンテンツの配信を高速化する方法を示しました。
このガイドに関するご意見や質問は、以下のフィードバックフォームを使用して共有できます。詳細については、Varnish Cache documentationを読んでください。
Varnish Cacheの主な欠点は、HTTPSのネイティブサポートが不足していることです。ウェブサイト/アプリケーションでHTTPSを有効にするには、SSL/TLS終端プロキシを構成してVarnish Cacheと連携させ、サイトを保護する必要があります。次の記事では、Hitchを使用してCentOS/RHEL 8でVarnish CacheのHTTPSを有効にする方法を示します。
Source:
https://www.tecmint.com/install-varnish-cache-for-nginx-on-centos-rhel-8/