user nginx;
worker_processes 1;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
  worker_connections 1024;
}

http {
  include /etc/nginx/mime.types;
  default_type application/octet-stream;

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';

  access_log /var/log/nginx/access.log main buffer=16k;

  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  client_body_buffer_size 80k;
  client_max_body_size 9m;
  client_header_buffer_size 1k;

  client_body_timeout 10;
  client_header_timeout 10;
  keepalive_timeout 13;
  send_timeout 10;

  open_file_cache max=1024 inactive=10s;
  open_file_cache_valid 60s;
  open_file_cache_min_uses 2;
  open_file_cache_errors on;

  add_header Timing-Allow-Origin "*";
  add_header X-Content-Type-Options nosniff always;

  gzip on;
  gzip_disable "msie6";

  # Compression level (1-9).
  # 5 is a perfect compromise between size and CPU usage, offering about 75%
  # reduction for most ASCII files (almost identical to level 9).
  # Default: 1
  gzip_comp_level 5;

  # Don't compress anything that's already small and unlikely to shrink much if at
  # all (the default is 20 bytes, which is bad as that usually leads to larger
  # files after gzipping).
  # Default: 20
  gzip_min_length 256;

  # Compress data even for clients that are connecting to us via proxies,
  # identified by the "Via" header (required for CloudFront).
  # Default: off
  gzip_proxied any;

  # Tell proxies to cache both the gzipped and regular version of a resource
  # whenever the client's Accept-Encoding capabilities header varies;
  # Avoids the issue where a non-gzip capable client (which is extremely rare
  # today) would display gibberish if their proxy gave them the gzipped version.
  # Default: off
  gzip_vary on;

  # Compress all output labeled with one of the following MIME-types.
  # `text/html` is always compressed by gzip module.
  # Default: text/html
  gzip_types
    application/atom+xml
    application/geo+json
    application/javascript
    application/x-javascript
    application/json
    application/ld+json
    application/manifest+json
    application/rdf+xml
    application/rss+xml
    application/vnd.ms-fontobject
    application/wasm
    application/x-web-app-manifest+json
    application/xhtml+xml
    application/xml
    font/eot
    font/otf
    font/ttf
    image/bmp
    image/svg+xml
    image/vnd.microsoft.icon
    image/x-icon
    text/cache-manifest
    text/calendar
    text/css
    text/javascript
    text/markdown
    text/plain
    text/xml
    text/vcard
    text/vnd.rim.location.xloc
    text/vtt
    text/x-component
    text/x-cross-domain-policy;

  server {
    listen 80;
    server_name sesame.dws.rip;

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

    location / {
      if ($request_uri ~ ^/(.*)\.html(\?|$)) {
        return 302 /$1;
      }
      try_files $uri $uri.html $uri/ =404;
    }

    location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;}
  }
}
