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キャッシュを簡単に設定できることを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。