Nginxで静的ファイルをリバースプロキシキャッシュ
Nginxのリバースプロキシで他のサーバにあるファイルをキャッシュする
まずhttpブロックでキャッシュファイルを保存するパスとキャッシュのパラメータを設定する
http {
proxy_cache_path /var/nginx/cache keys_zone=static_assets:1m max_size=1g;
}
keys_zoneが1MBで8,000個のデータに関する情報を保存できるので, 1ファイル100KBと仮定すると800MB位になる
そんなに大きくないのでmax_sizeを全て格納できそうな1GBにする
次にserverブロックにリバースプロキシの設定を記述していく
upstream resource_server {
server resource.example.com;
}
server {
location /(css|js)/ {
proxy_pass http://resource_server;
proxy_cache static_assets;
proxy_cache_valid 200 10m;
add_header X-Cache-Hit $upstream_cache_status;
}
}
proxy_cache_pathの keys_zone
で指定したzone名を proxy_cache
に設定し, proxy_passに記述したサーバからのレスポンスを格納する
proxy_cache_validではレスポンスのステータスコードごとにキャッシュ時間の制御ができる
ここでは200が返って来たら10分間キャッシュするように設定している
キャッシュが使われたか等の情報は $upstream_cache_status
変数が持っているのでヘッダーとして出力すると確認できる
ドキュメントには値の意味が見当たらなかったが, Nginxのブログには書いてあった