Varnish Cacheによるウェブサイト高速化:CentOS Stream 9向けの実践的ソリューション
ウェブサイトの読み込みが遅いことは、ユーザーの離脱を招き、Googleの検索順位を下げる最短ルートです。私は以前、非常にトラフィックの多いCentOS 7のECサイトを管理していました。NginxやPHP-FPMを最適化しても、セール期間中にはサーバーが頻繁に「息切れ」していました。しかし、Varnish CacheをNginxの前面に導入したところ、結果は劇的でした。サーバーのCPU使用率は80%からわずか5〜10%に低下し、TTFB(応答速度)はミリ秒単位まで短縮されました。
ここでは、サポートが終了したCentOS 7の代替として現在最も安定した選択肢であるCentOS Stream 9で、この構成を構築する方法を解説します。
クイックスタート:5分で完了するクイックインストール
新しくインストールしたCentOS Stream 9のサーバーをお持ちの場合は、以下のコマンドを実行してその効果をすぐに確認してください。
ステップ1:NginxとVarnishのインストール
# EPELリポジトリのインストール
sudo dnf install epel-release -y
# NginxとVarnishのインストール
sudo dnf install nginx varnish -y
# サービスの有効化
sudo systemctl enable --now nginx
sudo systemctl enable --now varnish
ステップ2:Nginxのポートを8080に変更する
通常、Nginxはポート80を使用しますが、この場所をVarnishに譲る必要があります。Nginxの設定ファイルを開き、ポートを変更します:
sudo sed -i 's/listen 80;/listen 8080;/g' /etc/nginx/nginx.conf
sudo systemctl restart nginx
ステップ3:ポート80でリクエストを受け取るようにVarnishを設定する
Varnishを「最前線」にするために、デフォルトポートを変更する必要があります:
sudo systemctl edit --full varnish.service
ExecStartの行を探し、ポート6081を80に変更します。他のパラメータはそのままにしてください:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
最後に、設定をリロードしてサービスを再起動します:
sudo systemctl daemon-reload
sudo systemctl restart varnish
これで、Varnishはユーザーからのリクエストを受け取り、必要に応じてポート8080のNginxに転送する準備が整いました。
なぜこの構成でサーバーの負荷が軽くなるのか?
Varnish Cacheは、非常に高速なキャッシュメモリとして機能します。NginxがPHPを呼び出してデータベースに繰り返しクエリを投げる代わりに、Varnishが結果のコピーをRAMに保存します。次のユーザーがアクセスした際、Varnishは即座に結果を返します。これにより、高価なハードウェアのアップグレードなしで、サーバーの負荷が軽くなるだけでなく、毎秒数万件のリクエストを処理できるようになります。
VCL (Varnish Configuration Language) によるロジックの最適化
Varnishの真の力は/etc/varnish/default.vclファイルにあります。これは、私がニュースサイトやECサイトの最適化によく使用する設定です:
