ソフトウェアエンジニアの日常の雑記

日々思ったことをまとめます

NginxのCache設定

本家はこちら

Nginx + SpringBoot の構成で環境を構築している。

まだ、静的ファイル(.css,.js,.jpg,.gif,.map) はCDNを使わない感じでなんとでもなる規模だが、アクセス数が増えていくと、ちょっとSpringBootだけだとレスポンスが遅くなってきたので、対策する。

静的ファイルはSpringBootで返して、Nginxでキャッシュする設定にする。

SpringBootは設定は特になし。

Nginxに下記の設定を行う。


server { location / { // 省略 proxy_ignore_headers Cache-Control Expires; proxy_cache cachezone; proxy_cache_valid 404 5m; // 省略 add_header X-Cache $upstream_cache_status [always]; } }

proxy_ignore_headers Cache-Control Expires; この設定が必要です。

キャッシュがヒットしてるかどうかは、add_header で確認できますが、HTTPステータスが正常系しか動作しません。 add_headeralways をつけると、どのHTTPステータスでもでてくので、確認できます。

このようにすると、ある程度の規模までは、CDN使わずに、サクサクいけます。 最近ではHTTP/2でコネクション数の上限もほとんど気にしなくていいですし。