set $proxy_authorization ''; set_by_lua $proxyuri ' unescaped = ngx.unescape_uri(ngx.var.arg_uri); it, err = ngx.re.match(unescaped, "(https?://)(.*@)?([^/]*)(/.*)?"); if not it then -- Hack to cause nginx to return 404 return "http://localhost/404" end scheme = it[1]; authstring = it[2]; host = it[3]; query = it[4]; if ngx.var.http_authorization and ngx.var.http_authorization ~= "" then ngx.var.proxy_authorization = ngx.var.http_authorization; elseif authstring then auth = string.sub(authstring, 0, -2); auth64 = ngx.encode_base64(auth); ngx.var.proxy_authorization = "Basic " .. auth64; end -- Default to / if none is set to avoid using the request_uri query if not query then query = "/"; end return scheme .. host .. query; '; add_header X-GG-Cache-Status $upstream_cache_status; proxy_set_header Authorization $proxy_authorization; proxy_pass $proxyuri; # Redirect back to ourselves on 301 replies proxy_redirect ~^(.*)$ /cache/?uri=$1;