user web;
worker_processes 4;

# Speed up regular expressions.
pcre_jit on;

error_log stderr debug;

events {
    # Connections per worker process.
    worker_connections 1024;
}

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

    types {
        text/plain asc;
    }

    server_tokens off;
    client_max_body_size 1m;
    sendfile on;
    tcp_nopush on;

    include headers.include;

    server {
        listen 8080;
        root /srv/http/public;

        location / {
            try_files $uri $uri/ =404;
            autoindex on;

            index index.html index.htm;
            if (-d $request_filename) {
                rewrite [^/]$ $http_x_forwarded_proto://$http_host$uri/ redirect;
            }
        }

        location /healthz {
            access_log off;
            add_header 'Content-Type' 'application/json';
            return 200 '{"status":"OK"}';
        }

        location /.well-known/ {
            alias /srv/http/public/well-known/;
            default_type text/plain;
        }

        location /.well-known/openpgpkey/hu/ {
            alias /srv/http/public/well-known/openpgpkey/fizz.buzz/hu/;
            default_type        "application/octet-stream";
            add_header          Access-Control-Allow-Origin * always;
        }

        location /.well-known/openpgpkey/policy {
            alias /srv/http/public/well-known/openpgpkey/fizz.buzz/policy;
            default_type        "application/octet-stream";
            add_header          Access-Control-Allow-Origin * always;
        }

        location ~ /\.well-known/(?<path>openpgpkey/[^/]+/hu/.*) {
            alias /srv/http/public/well-known/$path;
            default_type        "application/octet-stream";
            add_header          Access-Control-Allow-Origin * always;
        }

        location /.well-known/matrix/server {
          default_type application/json;
          add_header "Access-Control-Allow-Origin" *;
          return 200 '{"m.server": "matrix.fizz.buzz:8448"}';
        }

        location /.well-known/matrix/client {
          default_type application/json;
          add_header "Access-Control-Allow-Origin" *;
          return 200 '{"m.homeserver":{"base_url": "https://matrix.fizz.buzz"}}';
        }
    }

}