CentOS Stream 9でVarnish CacheとNginxを使いウェブサイトを爆速化する方法

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

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の行を探し、ポート608180に変更します。他のパラメータはそのままにしてください:

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サイトの最適化によく使用する設定です:

Share: