worker_processes ${{NUM_WORKERS}};
error_log stderr notice;
daemon off;

env PORT;
env GIT_REV;

events {
  worker_connections 1024;
}

http {
  include mime.types;

  server {
    listen ${{PORT}};
    lua_code_cache ${{CODE_CACHE}};

    location / {
      set $_url "";
      default_type text/html;
      content_by_lua '
        require("lapis").serve("app")
      ';
    }

    location /static/ {
      alias static/;
    }

    location /static/comp/ {
      alias bower_components/;
    }

    location /favicon.ico {
      alias static/favicon.ico;
    }

    location /humans.txt {
      alias static/humans.txt;
    }

    location /keybase.txt {
      alias static/keybase.txt;
    }

    location /capture {
      internal;
      resolver 8.8.8.8;
      set_unescape_uri $clean_url $arg_url;
      proxy_pass $clean_url;
    }

    location /proxy {
      internal;
      rewrite_by_lua "
        local req = ngx.req
        for k,v in pairs(req.get_headers()) do
          if k ~= 'content-length' then
            req.clear_header(k)
          end
        end
        if ngx.ctx.headers then
          for k,v in pairs(ngx.ctx.headers) do
            req.set_header(k, v)
          end
        end
      ";
      resolver 8.8.8.8;
      proxy_http_version 1.1;
      proxy_pass $_url;
    }
  }
}
