質問: ``` location ~* \.(?:html|xml)$ { expirs 1d; add_header Cache-Control "public"; } ``` `try_files`でURLの後尾に拡張子`.html`が無くてもhtmlと認識しています。 Nginxリバースプロキシの標準通りの設定を施しています。 この状態で`/var/cache/nginx/my_proxy`を監視しています。 `http://hoge.com/car.html`にアクセスするとmy_proxyまでのパスに何も生成されません。 `http://hoge.com/car`にアクセスすると `/var/cache/nginx/my_proxy/0/2d/sdadaf`が生成されました。 ``` rm -fR /var/cache/nginx/my_proxy/* ``` 削除して次はlocation~*の部分のhtmlだけ消してNginxを再起動すると、 `http://hoge.com/car.html`にアクセスしても `/var/cache/nginx/my_proxy/0/2d/sdadaf`が生成されました。 つまりexpirsでhtmlをキャッシュしていれば、WordpressなどPHPを使用しないサイトにリバースプロキシは皆無ということでしょうか? リバースプロキシは本来、動的ファイルをキャッシュする目的で作られたんでしょうか? また、expirsでキャッシュしたキャッシュファイルはどこにありますか? また、Nginx.confの文字列は少ない方がWEBサイトが高速になりますか?(includeせずにインラインに入れるなど)
回答: expirsでキャッシュしたキャッシュファイルはどこにありますか? Module ngx_http_headers_module expires は **ブラウザキャッシュ** のためのヘッダーを送信するためのオプションです。ブラウザからこのNginxサーバーに直接アクセスしている場合、サーバーにキャッシュされるものではありません。 リバースプロキシは本来、動的ファイルをキャッシュする目的で作られたんでしょうか? リバースプロクシは名前の通り、プロクシです。クライアントからのリクエストを他のサーバーに投げて、そのレスポンスをクライアントに返すことが仕事です。 !イメージ その道中で、リクエスト先のサーバーからのレスポンスをNginxでキャッシュすることによりリクエスト回数を減らし、負荷やロスタイムを軽減させることが出来るのがプロクシキャッシュです。 任意のWebサーバーにはApache HTTPDやphp-fpmを始めとする様々なものが該当します。 やっていることはCDNと大幅には違いないでしょう。(CDNには分散化などもあるため違うと言えば違いますが......) 一方でNginxはプロクシサーバーではなくWebサーバーとしての機能を持ちます。 一般に静的ファイルへのリクエストに対してはNginxは「プロクシサーバー」としては利用されません。 サーバー内の静的ファイルを返すだけならレスポンスが変わるわけでもなく、Nginxからのリクエストは必要ないのでキャッシュを別途つくるのは無意味であり、容量の無駄ともいえます。 (キャッシュと配信元でストレージアクセスのレイテンシが大幅に異なってくるならこれ限りではないでしょうが) Nginx.confの文字列は少ない方がWEBサイトが高速になりますか?(includeせずにインラインに入れるなど) 実装を知っているわけではないですが、設定ファイルはコンパイルされた上でメモリ上にキャッシュされるはずなので、そのような違いは無いかと思います。むしろ管理が大変になるだけかと。