events {
  worker_connections  1024;  ## Default: 1024
}

http {

  ## use mime types
  include /etc/nginx/mime.types;

  server {

    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    root /usr/share/nginx/html;

    location = / {
      ## Convevience redirect to redirect to the web root
      return 301 /treetrail/;
    }

    location = /treetrail {
      ## Convevience redirect to redirect to the web root
      return 301 /treetrail/;
    }

    location /treetrail/ {
      alias /usr/share/nginx/html/;
      index index.html;
      try_files $uri $uri/ /index.html;
    }

    location /treetrail/v1/ {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      proxy_redirect off;
      proxy_buffering off;
      proxy_pass http://127.0.0.1:8081;
    }
  }

  map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
  }

  ## enable gzip compression
  gzip on;
  gzip_vary on;
  gzip_min_length 256;
  gzip_proxied any;

  gzip_types
    ## text/html is always compressed : https://nginx.org/en/docs/http/ngx_http_gzip_module.html
    text/plain
    text/css
    text/javascript
    application/javascript
    application/x-javascript
    application/xml
    application/json
    application/ld+json;
}
