server {
    listen 80 default_server;

    # server_name box.clarabot.dev;
    # listen 443 ssl default_server;
    # ssl_certificate /etc/nginx/ssl/box.clarabot.dev.crt;
    # ssl_certificate_key /etc/nginx/ssl/box.clarabot.dev.key;

    root /var/www/ui;
    index index.html;

    location = /api/nano/status {
        proxy_pass http://unix:/opt/nano/control_api.sock:/status;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location ~* /api/nano/(.*)$ {
        proxy_pass http://unix:/opt/nano/control_api.sock:/$1;
    }

    location = /api/box/status {
        proxy_pass http://127.0.0.1:8002/status;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location = /api/box/serial/ws {
        proxy_pass http://127.0.0.1:8002/serial/ws;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location ~* /api/box/(debug/logs/.*/ws)$ {
        proxy_pass http://127.0.0.1:8002/$1;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location ~* /api/box/(.*)$ {
        proxy_pass http://127.0.0.1:8002/$1;
        proxy_read_timeout 150s;
    }

    location = /index.html {
        expires -1;
        add_header Cache-Control private;
    }

    location /assets/ {
        # TODO: no caching yet as the default angular asset build has no hashing
        expires -1;
        add_header Cache-Control private;

        access_log off;

        try_files $uri =404;
    }

    location ~* \.(ico|css|js|gif|jpeg|jpg|png|woff|ttf|otf|svg|woff2|eot)$ {
        expires 1d;
        add_header Cache-Control "public, max-age=86400";

        access_log off;

        try_files $uri =404;
   }

    location / {
        expires -1;
        add_header Cache-Control private;

        try_files $uri /index.html;
    }
}
