worker_processes  1;

daemon off;

error_log  /dev/stdout;

events {
    worker_connections  1024;
}

http {
    default_type  application/octet-stream;
    log_format json escape=json
      '{'
        '"timestamp":"$time_iso8601",'
        '"msec":"$msec",'
        '"request_id":"$request_id",'
        '"remote_addr":"$remote_addr",'
        '"remote_user":"$remote_user",'
        '"request":"$request",'
        '"status":$status,'
        '"body_bytes_sent":$body_bytes_sent,'
        '"referer":"$http_referer",'
        '"user_agent":"$http_user_agent",'
        '"http_x_forwarded_for":"$http_x_forwarded_for"'
      '}';

    keepalive_timeout  65;

    server {
        listen       8000;
        server_name  localhost;

        access_log /dev/stdout json;

        location / {
            try_files $uri @app;
        }

        location @app {
            uwsgi_pass uwsgi://localhost:8080;
            uwsgi_param  QUERY_STRING       $query_string;
            uwsgi_param  REQUEST_METHOD     $request_method;
            uwsgi_param  CONTENT_TYPE       $content_type;
            uwsgi_param  CONTENT_LENGTH     $content_length;

            uwsgi_param  REQUEST_URI        $request_uri;
            uwsgi_param  PATH_INFO          $document_uri;
            uwsgi_param  DOCUMENT_ROOT      $document_root;
            uwsgi_param  SERVER_PROTOCOL    $server_protocol;
            uwsgi_param  REQUEST_SCHEME     $scheme;
            uwsgi_param  HTTPS              $https if_not_empty;

            uwsgi_param  REMOTE_ADDR        $remote_addr;
            uwsgi_param  REMOTE_PORT        $remote_port;
            uwsgi_param  SERVER_PORT        $server_port;
            uwsgi_param  SERVER_NAME        $server_name;
            uwsgi_param  HTTP_X_REQUEST_ID  $request_id;
        }
    }
}
