server {
  listen 8080;
  server_name localhost;

  root /usr/share/nginx/html;
  index index.html;

  location ~* \.(?:js|jsx|mjs|ts|tsx|css|png|jpg|jpeg|gif|ico|webp|avif|svg|ttf|otf|woff|woff2|map)$ {
    access_log off;
    etag on;

    expires 3M;
    add_header Cache-Control "public, immutable";
    try_files $uri =404;
  }

  location = /index.html {
    etag on;
    add_header Cache-Control "no-cache";
  }

  location / {
    try_files $uri $uri/ /index.html;
  }

  error_page 500 502 503 504 /50x.html;
  location = /50x.html { internal; }

  location ~ /\.ht { deny all; }

  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
    text/plain
    text/css
    text/xml
    text/javascript
    application/javascript
    application/x-javascript
    application/json
    application/xml
    application/xml+rss
    font/ttf
    font/otf
    image/svg+xml;
}
