0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Nginx⑥プロキシキャッシュの設定

Last updated at Posted at 2025-03-07

はじめに

Nginxを使用したプロキシキャッシュの設定をローカル環境で手軽に体感することを目的としておりますので、Nginxに初めて触れる方向けの内容となっております。

キャッシュとは

同じアクションを高速化するために、ソフトウェアなどで取り扱うデータを一時的に保存する仕組みのことです

プロキシキャッシュとは

Nginxなどのプロキシサーバが動的コンテンツやバックエンドのレスポンスをキャッシュする手法です

環境

  • Ubuntu 24.04
  • nginx-1.26.3
  • 推奨される設定状態
    • sites-availablesites-enabledディレクトリが存在する
    • /etc/nginx/sites-enabled/内の設定ファイルがNginxの設定に組み込まれている
    • 静的ファイルが存在する

下記のサイトで上記のような環境にする方法が記載されております。

手順1:プロキシキャッシュの設定

下記のコードをnginx.confに追加します。

/etc/nginx/nginx.conf
http {
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
}
  • /var/cache/nginx
    • キャッシュデータが保存されるディレクトリのパスです
  • levels=1:2
    • キャッシュファイルをディレクトリツリー内で保存する方法です。1:2は、1階層目に1文字、2階層目に2文字のサブディレクトリを作ることを意味します。これによりファイルシステムのパフォーマンスが向上します
  • keys_zone=my_cache:10m
    • キャッシュキーを格納するメモリ領域の名前をmy_cache、サイズを10MBに設定しています
  • max_size=1g
    • キャッシュの最大サイズを1GBに制限しています。1GBを超えると古いキャッシュから順に削除されます
  • inactive=60m
    • キャッシュが60分間使用されなかった場合、キャッシュが削除されます。つまり、最後にアクセスされてから60分経過すると、そのキャッシュは無効化されます
  • use_temp_path=off
    • 一時的なファイルの保存を無効化します。これにより、キャッシュデータは直接/var/cache/nginxに保存されます
/etc/nginx/sites-available/proxy_cache.conf
server {
        listen 8080;
        server_name localhost;

        location / {
                proxy_pass http://localhost:80;
                proxy_cache my_cache;
                proxy_cache_valid 200 302 10m;
                proxy_cache_valid 404 1m;
                add_header X-Cache $upstream_cache_status;
        }
}
  • proxy_cache my_cache;
    • my_cacheという名前のキャッシュゾーンを使用してバックエンドからのレスポンスをキャッシュします
  • proxy_cache_valid 200 302 10m;
    • 200と302ステータスコードのレスポンスを10分間キャッシュします
  • proxy_cache_valid 404 1m;
    • 404ステータスコードのレスポンスを1分間キャッシュします
  • add_header X-Cache $upstream_cache_status;
    • キャッシュの状態をX-Cacheヘッダーに追加します
/etc/nginx/sites-available/normal
server {
    listen 80;
    server_name localhost;

    # リクエストされた際にドキュメントがある場所
    root /path/to/static/files;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

手順2:sites-enabled/にシンボリックリンクを作成

sudo ln -s /etc/nginx/sites-available/normal /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/proxy_cache.conf /etc/nginx/sites-enabled/

手順3:設定の反映

sudo systemctl reload nginx

手順4:キャッシュの状態を確認する方法

  1. http://localhost:8080にアクセスし、開発者ツールを開きます。
  2. ネットワークタブを選択します
  3. 再度ページをリロードします
  4. キャッシュ対象のリクエストを選択して、レスポンス ヘッダーX-Cacheヘッダーが表示されるので、キャッシュの状態(例:HIT)を確認します

X-Cacheの状態

  • HIT
    • キャッシュからレスポンスを返した場合
  • MISS
    • キャッシュが存在しなかった場合(初回リクエストなど)
  • BYPASS
    • キャッシュがバイパスされた場合(例えば、キャッシュ無効化設定が適用された場合)
  • EXPIRED
    • キャッシュが期限切れになり、バックエンドから新たにレスポンスを取得した場合

まとめ

以上で、プロキシキャッシュの設定ができました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?