Nginxのキャッシュ機能を検証します。
今回サーバーをリバースプロキシとし、バックエンドからの応答をキャッシュします。
まずは設定ファイルから
キャッシュに関係有るところは赤字にしています。
http {
#proxy cache settings
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=my-key:8m max_size=50m inactive=120m;
proxy_temp_path /var/cache/nginx/temp;
#proxy header settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
upstream test-stream {
server 192.168.200.2:9200;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://test-stream;
proxy_ignore_headers Cache-Control;
proxy_cache my-key;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 10m;
}
}
}
80番ポートへのアクセスをバックエンドtest-streamに転送する設定になります。
バックエンドからの応答は proxy_cache_pathで指定したパスに保管されます。
levels:キャッシュの保管するディレクトリの階層を指定します。
keys_zone:キャッシュ領域名、共有メモリのサイズを指定します。
max_size:キャッシュサイズの最大値を指定します。最大値を超えた場合は、古いデータから削除されます。
inactive:ここで指定した期間を過ぎるとキャッシュが削除されます。
proxy_temp_pathはキャッシュファイルの一時領域です。
キャッシュファイルが一時的に指定されたパスに書き込まれた後に、proxy_cache_pathに書き出されるようです。
さらにlocationディレクトリブで利用するキャッシュの領域を指定します。
proxy_ignore_headers:バックエンドからの応答ヘッダにCache-Controlが付与されていると、キャッシュされないので、ヘッダーごと無視する設定です。
proxy_cache:利用するキャッシュの領域を指定します。keys_zoneで設定した名前に紐付きます。
proxy_cache_valid:応答コードごとのキャッシュ保管期間を指定します。
長くなったので動作確認は明日にします。
今回サーバーをリバースプロキシとし、バックエンドからの応答をキャッシュします。
まずは設定ファイルから
キャッシュに関係有るところは赤字にしています。
http {
#proxy cache settings
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=my-key:8m max_size=50m inactive=120m;
proxy_temp_path /var/cache/nginx/temp;
#proxy header settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
upstream test-stream {
server 192.168.200.2:9200;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://test-stream;
proxy_ignore_headers Cache-Control;
proxy_cache my-key;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 10m;
}
}
}
80番ポートへのアクセスをバックエンドtest-streamに転送する設定になります。
バックエンドからの応答は proxy_cache_pathで指定したパスに保管されます。
levels:キャッシュの保管するディレクトリの階層を指定します。
keys_zone:キャッシュ領域名、共有メモリのサイズを指定します。
max_size:キャッシュサイズの最大値を指定します。最大値を超えた場合は、古いデータから削除されます。
inactive:ここで指定した期間を過ぎるとキャッシュが削除されます。
proxy_temp_pathはキャッシュファイルの一時領域です。
キャッシュファイルが一時的に指定されたパスに書き込まれた後に、proxy_cache_pathに書き出されるようです。
さらにlocationディレクトリブで利用するキャッシュの領域を指定します。
proxy_ignore_headers:バックエンドからの応答ヘッダにCache-Controlが付与されていると、キャッシュされないので、ヘッダーごと無視する設定です。
proxy_cache:利用するキャッシュの領域を指定します。keys_zoneで設定した名前に紐付きます。
proxy_cache_valid:応答コードごとのキャッシュ保管期間を指定します。
長くなったので動作確認は明日にします。

コメント