events { } http { include mime.types; sendfile on; server { error_page 404 /index.html; root /usr/share/nginx/html; location /assets { expires 1y; log_not_found off; access_log off; } location = /index.html { add_header Cache-Control 'no-store'; } location = / { add_header Cache-Control 'no-store'; } location = /env.js { add_header Cache-Control 'no-store'; } location / { try_files $uri $uri/ /index.html; } location ~* \.(?:ico|css|gif|jpe?g|png)$ { expires 1y; add_header Pragma public; add_header Cache-Control "public"; } # --- Brotli brotli on; brotli_comp_level 6; brotli_static on; brotli_types application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml; # --- GZIP gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types application/javascript application/rss+xml application/vnd.ms-fontobject application/x-font application/x-font-opentype application/x-font-otf application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/opentype font/otf font/ttf image/svg+xml image/x-icon text/css text/javascript text/plain text/xml; } }