2026年11月13日

2026年11月13日

Nginxでスタティックファイルのキャッシュヘッダーを設定する方法

はじめに

ウェブサイトのパフォーマンス向上には、静的ファイル(画像やCSS、JavaScriptなど)を効率的にキャッシュすることも重要な要素です。Nginxはその点でも優れていますが、適切なキャッシュヘッダーを設定することでさらに効果を高めることができます。本記事では、Nginxを使って静的ファイルに適切なキャッシュヘッダーを設定する方法について解説します。

症状・背景

このテーマが必要になる主な場面は以下の通りです:

  • ウェブサイトのパフォーマンス向上を目的として、静的ファイルのキャッシュを利用したい
  • Nginxで静的ファイルを効率的に配信し、ユーザーからのリクエストを減らしたい

手順・設定方法

ステップ1: キャッシュヘッダーセットアップ

# Nginxのコンフィグレーションファイル(通常は /etc/nginx/nginx.conf または /etc/nginx/conf.d/ にある)を開く
sudo nano /etc/nginx/nginx.conf

# httpブロック内に以下を追加
http {
    # 静的ファイルのキャッシュヘッダーを設定する
    sendfile on;
    aio threads;
    directio 1024k;

    # デフォルトのタイムアウトを設定
    client_body_timeout 60s;
    client_header_timeout 60s;
    keepalive_timeout 70s;
    send_timeout 60s;

    # 静的ファイルに適用するキャッシュヘッダー
    include /etc/nginx/conf.d/static_files.conf;
}

ステップ2: キャッシュヘッダーの詳細設定

# /etc/nginx/conf.d/static_files.conf ファイルを作成または編集
sudo nano /etc/nginx/conf.d/static_files.conf

# 静的ファイルに適用するキャッシュヘッダーを指定
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, max-age=2592000";
}

ステップ3: アプリケーションキャッシュヘッダー

# より複雑なアプリケーション向けのキャッシュヘッダーを設定する場合
location /app/static {
    expires 365d;
    add_header Cache-Control "public, max-age=31536000";
}

ステップ4: 設定適用と確認

# Nginxのコンフィグレーションを再読み込み
sudo nginx -t
sudo systemctl reload nginx

注意事項

  • 安全性: ユーザーがアップロードしたファイルには注意を払ってください。不正なコンテンツはキャッシュされないよう、適切なアクセス制御を設定してください。
  • パフォーマンス: 追加のキャッシュヘッダーはパフォーマンス向上に寄与しますが、過度な設定は逆効果になることもありますので注意が必要です。
  • 監視: キャッシュの有効性を定期的に確認し、必要に応じて調整してください。

まとめ

1. sendfile on: Nginxがファイルシステムから直接ブラウザにファイルを送信します。

2. aio threads: マルチスレッドI/O操作を可能にします。

3. expires 30d: 静的ファイルに対するキャッシュの有効期限を設定します。

4. add_header Cache-Control "public, max-age=2592000": キャッシュが共有できるようにし、有効期限も設定します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲