CentOS 8でNginxを使用してVarnish Cache 6をインストールおよびセットアップする方法

Varnish Cacheは、ウェブサイトとAPI向けの無料のオープンソースのリバースプロキシHTTPアクセラレータです。 HTTPで実行されているWebサーバーの前にリバースプロキシとしてインストールできます。 Webサーバーとブラウザの間にあり、Webページ、Cookie、その他のデータをメモリに保存します。このキャッシュは、まったく同じコンテンツに対する今後のすべてのリクエストに対応するために使用されます。これにより、Webアプリケーションの負荷が増加し、Webサーバーのパフォーマンスが300倍以上向上します。

このチュートリアルでは、Nginxサーバーをバックエンドサーバーとして設定し、ポート8080でリッスンするように構成してから、デフォルトのHTTPポート80でリッスンするようにVarnishキャッシュを構成します。

前提条件

  • CentOS 8を実行しているサーバー。
  • rootパスワードがサーバーに構成されます。

Nginx Webサーバーのインストールと構成

まず、システムにNginx Webサーバーをインストールする必要があります。次のコマンドでインストールできます。

dnf install nginx -y

インストールしたら、Nginxサービスを開始し、次のコマンドを使用してシステムの再起動時に開始できるようにします。

systemctl start nginx
systemctl enable nginx

デフォルトでは、Nginxはポート80でリッスンしています。したがって、ポート80でリッスンするようにNginxを構成する必要があります。Nginxのデフォルト構成ファイルを編集して構成できます。

nano /etc/nginx/nginx.conf

次の行を見つけます。

listen       80 default_server;
listen       [::]:80 default_server;

そして、それらを次の行に置き換えます。

listen       8080 default_server;
listen       [::]:8080 default_server;

終了したら、ファイルを保存して閉じます。次に、Nginxサービスを再起動して変更を適用します。

systemctl restart nginx

この時点で、Nginx Webサーバーがインストールされ、ポート8080でリッスンしています。次のコマンドを使用して確認できます。

netstat -tpln | grep 8080

次の出力が表示されます。

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      30367/nginx: master 
tcp6       0      0 :::8080                 :::*                    LISTEN      30367/nginx: master

Varnish Cacheをインストールする

デフォルトでは、VarnishパッケージはCentOS 8のデフォルトリポジトリで利用できます。次のコマンドを実行するだけでインストールできます。

dnf module install varnish

インストールしたら、次のコマンドでVarnishサービスを開始します。

systemctl start varnish

次のコマンドを使用して、インストールされているVarnishキャッシュのバージョンを確認することもできます。

varnishd -V

次の出力が表示されます。

varnishd (varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2018 Varnish Software AS

Nginx用にワニスを構成する

次に、ポート80で実行するようにニスを構成して、クライアントからのHTTPリクエストを受信する必要があります。 Varnishのデフォルト設定ファイルを編集することで設定できます:

systemctl edit --full varnish

次の行を見つけます。

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

そして、それを次の行に置き換えます。

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

終了したら、ファイルを保存して閉じます。

次に、Varnishのバックエンドサーバーを定義する必要があります。 Varnishのメイン構成ファイル/etc/varnish/default.vclを編集することでそれを行うことができます。

nano /etc/varnish/default.vcl

次の行を変更します。

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

終了したら、ファイルを保存して閉じます。次に、次のコマンドを使用してsystemdデーモンをリロードします。

systemctl daemon-reload

次に、次のコマンドを使用して、Varnishサービスを再起動し、システムの再起動時に開始できるようにします。

systemctl restart varnish 
 systemcl enable varnish

次のコマンドを使用して、ワニスのステータスを確認することもできます。

systemctl status varnish

次の出力が表示されます。

? varnish.service - Varnish Cache, a high-performance HTTP accelerator
   Loaded: loaded (/etc/systemd/system/varnish.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-08-29 09:36:58 EDT; 12s ago
  Process: 30421 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS)
 Main PID: 30424 (varnishd)
    Tasks: 217
   Memory: 91.8M
   CGroup: /system.slice/varnish.service
           ??30424 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
           ??30434 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Aug 29 09:36:57 centos8 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator...
Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91
Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Aug 29 09:36:58 centos8 varnishd[30424]: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91
Aug 29 09:36:58 centos8 varnishd[30424]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Child (30434) Started
Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) Started
Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) said Child starts
Aug 29 09:36:58 centos8 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.

次のコマンドを使用して、NginxとVarnishのリスニングポートを確認できます。 広告

stat -tpln | grep 80

次の出力が表示されます。

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      30424/varnishd      
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      30367/nginx: master 
tcp6       0      0 :::80                   :::*                    LISTEN      30424/varnishd      
tcp6       0      0 :::8080                 :::*                    LISTEN      30367/nginx: master

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

CentOS 8ではデフォルトでSELinuxが有効になっています。そのため、Varnish用にSELinuxを設定する必要があります。次のコマンドで設定できます。

setsebool -P httpd_can_network_connect 1

次に、firewalld経由でポート80を許可する必要があります。次のコマンドで実行できます。

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

完了したら、次のステップに進むことができます。

ニスキャッシュのテスト

この時点で、Varnishキャッシュがインストールされ、Nginx Webサーバーで構成されます。ここで、Varnishキャッシュが機能するかどうかをテストします。

次のようにcurlコマンドを使用してテストできます。

curl -I http://localhost

次の出力が表示されます。

HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Sat, 29 Aug 2020 13:53:44 GMT
Content-Type: text/html; charset=UTF-8
X-Powered-By: PHP/7.2.24
X-Varnish: 32800
Age: 0
Via: 1.1 varnish (Varnish/6.0)
Accept-Ranges: bytes
Connection: keep-alive

結論

おめでとう! CentOS 8にNginxでVarnishキャッシュを正常にインストールしました。ApacheWebサーバーでVarnishキャッシュを簡単に設定できることを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。

Source