CentOS7でVarnishCacheを使用してNginxを高速化する方法


Varnish Cache(Varnishとも呼ばれます)は、Webサーバーを高速化するために設計されたオープンソースの高性能HTTPアクセラレーターです。前回の記事では、CentOS7およびCentOS8でApache用のVarnishCacheをセットアップする方法について説明しました。

この記事では、VarnishCacheをCentOS7のNginxHTTPサーバーのフロントエンドとしてインストールして使用する方法を示します。このガイドはRHEL7でも機能するはずです。

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

ステップ1:CentOS7にNginxWebサーバーをインストールする

1.次のように、YUMパッケージマネージャーを使用して、デフォルトのCentOSソフトウェアリポジトリからNginxHTTPサーバーをインストールすることから始めます。

# yum install nginx

2.インストールが完了したら、今のところNginxサービスを開始し、システムの起動時に自動的に開始できるようにします。

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

3.次に、以下のコマンドを使用して、ポート80での受信パケットを許可するようにシステムファイアウォールルールを変更します。

# firewall-cmd --zone=public --permanent --add-port=80/tcp
# firewall-cmd --reload
# firewall-cmd --zone=public --permanent --add-port=8080/tcp
# firewall-cmd --reload

ステップ2:CentOS7にVarnishCacheをインストールする

4.これで、Varnish Cache 6の最新バージョン(執筆時点では6.5)用にコンパイル済みのRPMパッケージが用意されているため、公式のVarnishCacheリポジトリを追加する必要があります。

その前に、EPELリポジトリを有効にして、示されているようにいくつかの依存関係パッケージをインストールする必要があります。

# yum install -y epel-release

5.次に、GPG署名を処理するためのパッケージであるpygpgmeと、yumのネイティブ機能をさまざまな方法で拡張する便利なユーティリティのコレクションであるyum-utilsをインストールします。

# yum install pygpgme yum-utils

6.次に、以下のリポジトリ構成を含む/etc/yum.repos.d/varnishcache_varnish5.repoという名前のファイルを作成します。

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

重要:以下の構成の el 7 をLinuxディストリビューションとバージョンに置き換えてください。

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7.次に、以下のコマンドを実行してローカルのyumキャッシュを更新し、ワニスキャッシュパッケージをインストールします(インストール中に y または yes と入力してGPGキーを受け入れることを忘れないでください。パッケージ):

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish 

8. Varnish Cacheをインストールした後、メインの実行可能ファイルは/ usr/sbin/varnishdとしてインストールされ、varnish構成ファイルは/ etc/varnish /にあります。

  • /etc/varnish/default.vcl – this is the main varnish configuration file, it is written using vanish configuration language(VCL).

9.次に、ワニスサービスを開始し、システムの起動中に自動的に開始できるようにし、ステータスを確認して、次のように稼働していることを確認します。

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish

10.システムにインストールされているVarnish実行可能ファイルとバージョンの場所を確認することで、Varnishのインストールが成功したことを確認できます。

$ which varnishd
$ varnishd -V
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

ステップ3:VarnishCacheと連携するようにNginxを構成する

11.このステップでは、VarnishCacheと連携するようにNginxを構成する必要があります。デフォルトでは、Nginxはポート80でリッスンしますが、Varnishキャッシングの背後で実行されるように、デフォルトのNginxポートを8080に変更する必要があります。

以下のスクリーンショットに示すサーバーブロックのように、Nginx構成ファイル/etc/nginx/nginx.confを開き、listen 80という行を見つけて、listen8080に変更します。

# vi /etc/nginx/nginx.conf

注:これは、Varnishを介して提供するWebサイトのすべてのサーバーブロック構成ファイル(通常は/etc/nginx/conf.d/の下に作成されます)で実行する必要があります。

12.次に、ワニスサービス構成ファイルを開き、ワニスがリッスンするポートを指定するパラメーターExecStartを見つけ、その値を6081から80に変更します。

# systemctl edit --full  varnish

線は次のようになります。

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

13.次に、/ etc/varnish/default.vcl構成ファイルで、NginxをVarnishプロキシのバックエンドサーバーとして設定します。

# vi /etc/varnish/default.vcl 

バックエンドセクションを見つけて、ホストIPとポートを定義します。以下はデフォルトのバックエンド構成です。これを実際のコンテンツサーバーを指すように設定します。

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

14.必要なすべての構成を実行した後、Nginx HTTPDとVarnishキャッシュを再起動して、上記の変更を有効にします。

# systemctl daemon-reload
# systemctl restart nginx
# systemctl restart varnish

ステップ4:NginxでVarnishキャッシュをテストする

15.最後に、以下のcURLコマンドを使用してVarnishキャッシュが有効になっていて、Nginxサービスと連携してHTTPヘッダーを表示しているかどうかをテストします。

# curl -I http://localhost
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Wed, 06 Jan 2021 09:24:18 GMT
Content-Type: text/html
Content-Length: 4833
Last-Modified: Fri, 16 May 2014 15:12:48 GMT
ETag: "53762af0-12e1"
X-Varnish: 2
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Accept-Ranges: bytes
Connection: keep-alive

Varnish Cache Githubリポジトリから追加情報を見つけることができます:https://github.com/varnishcache/varnish-cache

このチュートリアルでは、CentOS7でNginxHTTPサーバー用にVarnishCacheをセットアップする方法を説明しました。以下のコメントフォームを使用して、クエリや追加のアイデアを送信してください。