Ubuntu で Nginx FastCGI キャッシュを設定する方法

Nginx FastCGI Cache は、Ubuntu サーバーの負荷を軽減することで、Web サイトのパフォーマンスを向上させます。これは特に動的コンテンツに効果的で、Nginx は PHP プロセッサを使用せずにキャッシュされたコンテンツを直接提供できます。これにより、応答時間が短縮され、リソースの使用量が減ります。Web インフラストラクチャにおける Nginx FastCGI Cache の主な機能と利点は次のとおりです。

  • 効率的なコンテンツ配信: Nginx FastCGI キャッシュは動的なコンテンツ出力を保存し、より高速なアクセスと配信を可能にします。
  • サーバー負荷の軽減: キャッシュされたコンテンツを提供すると、PHP 呼び出しの数が最小限に抑えられ、サーバーの負荷が軽減されます。
  • スケーラビリティ: Nginx FastCGI Cache は、Web サイトの成長に応じて速度を犠牲にすることなく、増加するトラフィックを管理するのに役立ちます。
  • カスタマイズ可能なキャッシュ: このオプションを使用すると、ニーズに合わせてキャッシュの有効期限、バイパス、更新条件を柔軟に設定できます。
  • ユーザーエクスペリエンスの向上: ウェブサイトの読み込み時間が速くなるとユーザーエクスペリエンスが向上し、訪問者の維持率と SEO ランキングにプラスの影響を与えます。
  • リソースの最適化: サーバー リソースの使用率を最適化し、同時リクエストをより効率的に処理します。
  • 簡単なデバッグ: キャッシュされたコンテンツをデバッグおよび検証するための簡単なメカニズムを提供し、スムーズな操作を保証します。
  • 互換性: 一般的な CMS プラットフォームとシームレスに連携し、大規模な構成なしでパフォーマンスを向上させます。

技術的な手順に移る際には、Nginx FastCGI Cache を実装することが、サイトの効率とユーザー満足度を向上させる戦略的な方法であることを念頭に置いてください。Nginx FastCGI Cache を使用して、Web サイトのパフォーマンスを強化していきましょう。

Nginx FastCGI キャッシュの設定

FastCGI キャッシュの Nginx 設定ファイルを編集する

設定ファイルを開く

まず、 nginx.conf ファイル。ここでは nano テキスト エディタを使用しますが、使い慣れたテキスト エディタであればどれでも使用できます。次のコマンドを入力します。

sudo nano /etc/nginx/nginx.conf

FastCGIパラメータの設定

ファイル内で、HTTP ブロックを見つけて、次の行を追加します。

fastcgi_cache_path /var/nginx/fastcgi_cache levels=1:2 keys_zone=fcgicache:150m max_size=20g inactive=60m use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

行を入力したら、 CTRL + O、 タイプ Yを押して CTRL + X 出る。

FastCGIパラメータを理解する

  • fastcgi_cache_path: このパラメータはFastCGIキャッシュを保存する場所を設定します(/var/nginx/fastcgi_cache) キャッシュされたコンテンツが保存される場所を指定するため、これは不可欠です。
  • levels=1:2: これにより、キャッシュの場所の下に 2 レベルのディレクトリ階層が作成されます。この設計により、ファイルが 2 つのディレクトリに分散され、ディスク I/O ボトルネックのリスクが軽減されます。
  • keys_zone: 共有メモリゾーンの名前を指定します(fcgicache)とその大きさ(150M)。共有メモリ ゾーンは、キャッシュ キーとメタデータを格納するために重要です。
  • max_size: キャッシュの最大サイズを定義します(この例では、 20GB)。この制限に達すると、新しいファイルのためのスペースを確保するために最も古いファイルが削除されます。
  • inactive: アクセスされていないデータがキャッシュから削除されるまでの期間を指定します。この例では、60 分に設定されています。
  • use_temp_path: これを設定する off 一時ストレージ領域の使用をバイパスして、指定されたキャッシュ フォルダーにファイルを直接書き込むように Nginx に指示します。
  • fastcgi_cache_key: キャッシュ検索のキーを定義するために使用されます。Nginx は、このキーの MD5 ハッシュを作成し、キャッシュ ファイルの名前として使用します。

FastCGI キャッシュ用に Nginx サーバー ブロックを構成する

サーバーブロックファイルの編集

次に、サーバーブロックファイルを編集する必要があります。この例では、ファイル名が example.com.conf次のコマンドで開きます。

sudo nano /etc/nginx/sites-available/example.com.conf

FastCGI キャッシュディレクティブを挿入する

LEMP がインストールされていると仮定して、PHP ファイルの場所ブロック内に次の行を挿入します。

fastcgi_cache fcgicache;
fastcgi_cache_valid 200 60m;
fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503;
fastcgi_cache_min_uses 1;
fastcgi_cache_lock on;
add_header X-FastCGI-Cache $upstream_cache_status;

FastCGI キャッシュ ディレクティブを理解する

  • fastcgi_cache: キャッシュを有効にし、以前に定義した共有メモリ ゾーンを指定します。
  • fastcgi_cache_valid: 特定の HTTP ステータス コードのキャッシュ期間を定義します。
  • fastcgi_cache_use_stale: Nginx が古いキャッシュされた応答を使用できる条件を設定します。
  • fastcgi_cache_min_uses: 応答がキャッシュされる前に要求される頻度を指定します。
  • fastcgi_cache_lock: 一度に 1 つのリクエストのみが新しいキャッシュ要素を設定するようにし、「キャッシュの殺到」を防止します。
  • add_header: カスタムヘッダーを追加します (X-FastCGI-Cache) を HTTP 応答に追加して、応答がキャッシュから提供されたかどうかを示します。

Nginx で FastCGI キャッシュ パージを構成する

キャッシュパージの設定

キャッシュ消去を使用すると、有効期限が切れる前にキャッシュからコンテンツを削除できます。キャッシュ消去を設定するには、サーバー ブロック ファイルに次の行を挿入してキャッシュ消去ディレクティブを作成します。

location ~ /purge(/.*) {
    # Uncomment the following two lines to allow purge only from the webserver
    allow 127.0.0.1;
    deny all;
    fastcgi_cache_purge fcgicache "$scheme$request_method$host$1";
}

プレス CTRL + O、 タイプ Yを押して CTRL + X テキストエディターを終了します。

キャッシュ消去の問題に対する代替アプローチ

キャッシュの消去で問題が発生する場合は、代わりにキャッシュの有効期限を調整できます。中程度から高トラフィックの Web サイトの場合、非アクティブな場合は 2 時間、全体的な有効期限は 4 時間など、有効期限を低く設定すると、より効率的になることがよくあります。

Nginxサーバーのテストと再起動

構成をテストする

構文エラーや誤った設定を避けるために、Nginx の設定を検証することが重要です。次のコマンドを使用します。

sudo nginx -t

すべてが正しければ、次の出力が表示されます。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginxサーバーを再起動する

最後に、Nginx サーバーを再起動して、行った変更を適用します。

sudo systemctl restart nginx

Nginx FastCGI キャッシュ ディレクトリの作成と最適化

FastCGI キャッシュ ディレクトリを作成する

それでは、Nginxがキャッシュファイルを保存するディレクトリを作成しましょう。このパスは、 nginx.conf ファイル:

sudo mkdir -p /var/nginx/fastcgi_cache

tmpfs を使用してキャッシュ ディレクトリを最適化する (オプション)

システムに十分なRAMがある場合は、 tmpfs キャッシュをメモリに保存します。これにより、ディスクストレージに比べてアクセス時間が短縮されます。ただし、RAMに保存するとメモリリソースが大量に消費される可能性があるため、注意してください。キャッシュディレクトリを次のようにマウントする方法は次のとおりです。 tmpfs:

編集 /etc/fstab ファイル:

sudo nano /etc/fstab

ファイルの最後に次の行を追加します。

tmpfs   /var/nginx/fastcgi_cache   tmpfs   defaults,size=512M   0 0

これにより、キャッシュ用に 512MB の RAM が割り当てられます。システム リソースに応じてサイズを調整できます。

マウント tmpfs:

sudo mount -a

この構成により、FastCGI キャッシュがメモリに保存され、RAM の使用率を犠牲にしてパフォーマンスが向上します。

Nginx FastCGI キャッシュ機能の検証

curl で FastCGI キャッシュをテストする

FastCGI Cacheが正しく動作しているかどうかを確認するには、 curl コマンド。キャッシュ設定によっては、キャッシュヒットが表示されるまでにコマンドを複数回実行する必要がある場合があります。

curl -I http://www.your-domain.com

もし持っていないなら curl インストールされている場合は、次のコマンドでインストールできます。

sudo apt install curl -y

出力では、 X-FastCGI-Cache: HIT ヘッダ:

~$ curl -I https://www.example.com/
HTTP/1.1 200 OK
...
X-FastCGI-Cache: HIT
...

これは、リクエストがキャッシュから処理されたことを示します。

キャッシュ除外の設定

WordPress管理ページ、コメントセクション、サイトマップなどのウェブサイト要素はキャッシュしないでください。Nginxがこれらをキャッシュしないように設定するには、 location (~\.php$) サーバーブロックファイル内の行:

# Cache by default
set $skip_cache 0;

# Don't cache URIs containing the following
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-..php|^/feed/|/tag/./feed/|index.php|/.sitemap..(xml|xsl)") {
    set $skip_cache 1;
}

# Don't cache for logged-in users or comment authors
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}

# POST requests and URIs with a query string should bypass the cache
if ($request_method = POST) {
    set $skip_cache 1;
}

if ($query_string != "") {
    set $skip_cache 1;
}

キャッシュ除外のデバッグ(オプション)

デバッグ目的でメモを追加したい場合は、各項目の下にカスタムメモを追加できます。 set $skip_cache 1; 次のような文です:

set $skip_reason "your custom note";

これは、トラブルシューティング中に特定のコンテンツがキャッシュされない理由を理解するのに役立ちます。

これらの設定を行った後、必ず設定をテストし、Nginx を再起動してください。

sudo nginx -t
sudo systemctl restart nginx

Nginx FastCGI キャッシュのベストプラクティスと考慮事項

FastCGI キャッシュはパフォーマンス上の大きなメリットをもたらしますが、特定のユースケースとサーバー リソースに合わせて構成が最適化されていることを確認することが重要です。

  • 選択する前に利用可能なRAMの量を評価する tmpfs キャッシュ用。サーバーに他の重要なプロセス用の十分なメモリがあることを確認してください。
  • アプリケーションに合わせてキャッシュの除外を調整します。提供されている例は WordPress 専用ですが、他の種類のアプリケーションでは異なる除外が必要になる場合があります。
  • キャッシュの使用状況とパフォーマンスを定期的に監視します。キャッシュがディスク領域を大量に消費したり、期待どおりにパフォーマンスが向上しない場合は、キャッシュ パス、サイズ、または設定を適宜調整することを検討してください。

結論

これで完了です。Ubuntu サーバーに Nginx FastCGI Cache をインストールする手順を説明しました。これにより、動的コンテンツを効率的に処理して、Web サイトのパフォーマンスが向上します。サイトのニーズに合わせてキャッシュ設定を維持することが、メリットを最大化するための鍵であることを忘れないでください。最適な設定を見つけるために、設定を微調整することをためらわないでください。熟練したプロでも、サーバー管理の初心者でも、このガイドが Web プレゼンスの最適化に役立つことを願っています。シンプルさと一貫性を保ち、あなたと訪問者にとってより高速でスムーズな Web サイト体験を実現しましょう。

Joshua James

コメントを残す