worker_processes 4;

events { worker_connections 1024; }

http {
    include mime.types;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    server_tokens off;

    charset utf-8;
    charset_types text/plain text/css application/json text/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;

    gzip  on;
    gzip_static  on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_types text/plain text/css application/json text/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    upstream pandora-web {
        server pandora:2620;
    }

    upstream pandora-websocket {
        server websocketd:2622;
    }

    server {

        listen   80 default;

        access_log  off;
        error_log   /var/log/nginx/error.log;

        location /favicon.ico {
            root   /pandora/static;
        }

        location /static/ {
            root   /pandora;
            autoindex off;
        }
        location /data/ {
            internal;
            root   /pandora;
        }

        location /api/ws/ {
                proxy_http_version 1.1;
                proxy_set_header Host $http_host;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Proxy "";
                proxy_redirect off;
                proxy_buffering off;
                proxy_read_timeout 999999999;
                proxy_pass http://pandora-websocket/;
        }

        location / {
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-Proto http;
                proxy_set_header Host $http_host;
                proxy_set_header Proxy "";
                proxy_redirect off;
                proxy_buffering off;
                proxy_read_timeout 90;    #should be in sync with gunicorn timeout
                proxy_connect_timeout 90; #should be in sync with gunicorn timeout
                if (!-f $request_filename) {
                    proxy_pass http://pandora-web;
                    break;
                }
                client_max_body_size 32m;
        }

        error_page  400  /;
        error_page  404  /404.html;
        location  /404.html {
            root   /pandora/static/html;
        }

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location  /50x.html {
            root   /pandora/static/html;
        }
    }
}
