# ---------------------------------------------------------------------- # | Cache expiration | # ---------------------------------------------------------------------- # Serve resources with far-future expiration date. # # (!) If you don't control versioning with filename-based # cache busting, you should consider lowering the cache times # to something like one week. # # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires # https://nginx.org/en/docs/http/ngx_http_headers_module.html#expires # No default expire rule. This config mirrors that of apache as outlined in the # html5-boilerplate .htaccess file. However, nginx applies rules by location, # the apache rules are defined by type. A consequence of this difference is that # if you use no file extension in the url and serve html, with apache you get an # expire time of 0s, with nginx you'd get an expire header of one month in the # future (if the default expire rule is 1 month). Therefore, do not use a # default expire rule with nginx unless your site is completely static # Documents location ~* \.(?:manifest|appcache|html?|xml|json)$ { expires 0; } # Feeds location ~* \.(?:rss|atom)$ { expires 1h; } # Media files location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ { access_log off; expires 1M; } # Media: svgz files are already compressed. location ~* \.svgz$ { access_log off; gzip off; expires 1M; } # CSS and JavaScript location ~* \.(?:css|js)$ { expires 1y; access_log off; } # Web fonts # If you are NOT using cross-domain-fonts.conf, uncomment the following directive # location ~* \.(?:eot|otf|tt[cf]|woff2?)$ { # expires 1M; # access_log off; # }