# nginx-app.conf

# configuration of the server
server {

    listen      80;

    charset     utf-8;

    # max upload size
    client_max_body_size 75M;

    location /static/ {
        alias /usr/share/osm-lightui/static/;
    }

    location / {
        proxy_pass       http://localhost:8000;
        proxy_set_header Upgrade         $http_upgrade;
        proxy_set_header Connection      "upgrade";
        proxy_set_header Host            $host;
        proxy_set_header X-Real-IP       $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    # -----------
    # Enable GZIP
    # -----------
    gzip               on;
    gzip_disable       "msie6";
    gzip_vary          on;
    gzip_types         text/plain
                       text/css
                       application/json
                       application/javascript
                       application/x-javascript
                       text/xml
                       application/xml
                       application/xml+rss
                       text/javascript
                       image/svg+xml;
    gzip_proxied       any;
    gzip_comp_level    6;
    gzip_buffers       16  8k;
    gzip_http_version  1.0;

    # ------------
    # Cache assets
    # ------------
#    location ~* .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css
#                  |rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz
#                  |gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi
#                  |wav|bmp|rtf)$ {
#        expires max;
#        log_not_found off;
#        access_log off;
#    }
}
