diff --git a/changelog/items/bugs-fixed/escape-uri-on-subdomain-skylink-requests.md b/changelog/items/bugs-fixed/escape-uri-on-subdomain-skylink-requests.md new file mode 100644 index 00000000..3beabc7e --- /dev/null +++ b/changelog/items/bugs-fixed/escape-uri-on-subdomain-skylink-requests.md @@ -0,0 +1 @@ +- fixed a bug when accessing file from skylink via subdomain with a filename that had escaped characters diff --git a/docker/nginx/conf.d/server/server.skylink b/docker/nginx/conf.d/server/server.skylink index 14c0870e..a8f659f1 100644 --- a/docker/nginx/conf.d/server/server.skylink +++ b/docker/nginx/conf.d/server/server.skylink @@ -6,7 +6,12 @@ include /etc/nginx/conf.d/include/init-optional-variables; location / { set_by_lua_block $skylink { return string.match(ngx.var.host, "%w+") } - set $path $uri; + set_by_lua_block $path { + -- strip ngx.var.request_uri from query params - this is basically the same as ngx.var.uri but + -- do not use ngx.var.uri because it will already be unescaped and we need to use escaped path + -- examples: escaped uri "/b%20r56+7" and unescaped uri "/b r56 7" + return string.gsub(ngx.var.request_uri, "?.*", "") + } include /etc/nginx/conf.d/include/location-skylink; }