server {

    # Listen for connection on (internal) port 80
    # If you are exposing this server to the internet, you should use HTTPS!
    # In which case, you should also set up a redirect from HTTP to HTTPS, and listen on port 443
    # See the Nginx documentation for more details
    listen 80;

    real_ip_header proxy_protocol;

    location / {

        proxy_set_header      Host              $http_host;
        proxy_set_header      X-Forwarded-By    $server_addr:$server_port;
        proxy_set_header      X-Forwarded-For   $remote_addr;
        proxy_set_header      X-Forwarded-Proto $scheme;
        proxy_set_header      X-Real-IP         $remote_addr;
        proxy_set_header      CLIENT_IP         $remote_addr;

        proxy_pass_request_headers on;

        proxy_redirect off;

        client_max_body_size 100M;

        proxy_buffering off;
        proxy_request_buffering off;

        # Do not touch this unless you have a specific reason - this and the docker-compose need to match
        proxy_pass http://inventree-server:8000;
    }

    # Redirect any requests for static files
    location /static/ {
        alias /var/www/static/;
        autoindex on;

        # Caching settings
        expires 30d;
        add_header Pragma public;
        add_header Cache-Control "public";
    }

    # Redirect any requests for media files
    location /media/ {
        alias /var/www/media/;

        # Media files require user authentication
        auth_request /auth;

        # Content header to force download
        add_header Content-disposition "attachment";
    }

    # Use the 'user' API endpoint for auth
    location /auth {
        internal;

        proxy_pass http://inventree-server:8000/auth/;

        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
    }

}