サーバークラウドネットワーク

NGINX Plus で FastCGI キャッシュを試してみた!

お客様より NGINX Plus で FastCGI キャッシュ機能は使えるか?というお問い合わせをいただきました。
FastCGI キャッシュに対応していることは知っていましたが、せっかくなので動作確認をしてみたいと思います。

はじめに

ブログを読んでいただきありがとうございます! 東京エレクトロンデバイスのJo Nishikawaです。

今回はお客様からNGINX Plusで FastCGI キャッシュ機能でWebページのキャッシュができるかとご質問をいただいので調査と動作確認をしてみました。

そもそもキャッシュとは

キャッシュとはウェブページを一時的に保存することです。

例えば、NGINX Plusがキャッシュをしてくれることによって、ユーザーがWebページを見ようとした際に実際のWebサーバーを見に行くのではなくNGINX Plusがキャッシュとして保存していたWebページを利用するので、すぐに表示がされます。

Webページの表示速度の向上や通信量の節約、サーバーへの負荷軽減などがメリットとなります。

NGINX Plus におけるキャッシュの種類

NGINX Plus では FastCGI キャッシュとプロキシキャッシュの2種類の機能があります。

  • FastCGI キャッシュ FastCGI レスポンスをそのままNGINXにキャッシュする機能が FastCGI キャッシュとなります。 今回はこちらの動作確認をしていきます。

  • プロキシキャッシュ NGINXをリバースプロキシとして配置し、キャッシュする機能です。 オリジンサーバーの前段にNGINXを配置する構成になります。

それぞれの違いとして、FastCGI キャッシュはWebサーバーとアプリケーションサーバーの間でプロトコルを提供するのに対し、プロキシキャッシュはWebサーバーとクライアントの間で、リクエストをキャッシュして返すことで応答時間を短縮する役割を担います。

つまり、FastCGI キャッシュはサーバーサイドにおける処理の高速化を目的とし、プロキシキャッシュはクライアントとの通信を効率化することを目的としています。

通信をキャッシュするという役割は同じですが利用される通信が異なります。

FastCGIとは?

そもそもFastCGIとはなにかというと、Webサーバーとアプリケーションサーバー間の通信プロトコルの一種で、動的なWebページの処理効率を向上させるために使用されます。

通常のCGI(Common Gateway Interface)よりも高速でリクエストを処理することができ、Webサイトのパフォーマンスを向上させることができます。

FastCGIを使用することで、ウェブサーバーとアプリケーションサーバーが常に接続されており、効率的なリクエスト処理が可能となります。

検証環境

準備したものは以下です。

  • AWS EC2 Ubuntu 22.04

上記のサーバーに NGINX Plus と WordPressをインストールしました。

キャッシュの確認で利用するWebページは以下になります。

検証

NGINX PlusでFastCGIを設定する方法 今回は、1台のUbuntu 22.04サーバーにNGINX PlusとWordPressを導入し、FastCGIを有効にする手順を紹介します。

STEP1 : NGINX Plus をサーバーにインストール こちらの手順は割愛します。
STEP2 : WordPress、PHP、MariaDB をサーバーにインストール こちらの手順は割愛します。

STEP3 : NGINX Plus の設定ファイルを編集 以下の様に設定を編集しました。

$ sudo vi /etc/nginx/conf.d/default.conf 
~~~ 
server {
    listen 80;
    server_name test.nishikawa.dev.xxxxx.net; # サーバー名を変更
    root /var/www/html/wordpress; # ルートを変更
    index index.php index.html index.htm;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
~~~ 

STEP4:NGINX Plus のプロセスを再起動して設定を反映

$ sudo systemctl restart nginx

STEP5: キャッシュさせたいWebページへ初回アクセス

Chromeの開発者ツールのPerfomanceにてリクエストからレスポンスまでの所要時間を確認したところ、5400msec程度となりました。

STEP6: キャッシュさせたいWebページへ2回目のアクセス

こちらもChromeの開発者ツールのPerfomanceにてリクエストからレスポンスまでの所要時間を確認したところ、670msec程度となりました。 キャッシュされたおかげでWebページの表示速度が随分と速くなりました。

まとめ

以上が、NGINX Plus にて WebページFastCGI機能にて高速化した検証結果となります。 詳細な設定やカスタマイズは、プロジェクトや要件に応じて行ってもらえればと思います。

私自身、Proxy キャッシュのイメージが強く同一サーバー内で NGINX Plus と Webサーバーを動かすパターンについて知れてよかったです。

キャッシュさせる際にヘッダーに値を挿入させたりもできるそうなのでまた勉強してみたいと思います。

また、今回紹介した機能は NGINX OSS でも NGINX Plus でも利用できる機能となります。

今回はここまでとなります、読んでいただきありがとうございました。

この記事に関連する製品・サービス

この記事に関連する記事