Você pode substituir /./ sequências e /goods/../ sequências por um único / . Por exemplo:
rewrite ^(.*)/\./(.*)$ $1/$2 redirect;
rewrite ^(.*)/(?!\.\.)[^/]+/\.\./(.*)$ $1/$2 redirect;
A sequência /(?!\.\.)[^/]+/ deve corresponder a qualquer elemento de caminho que não seja outro .. . As reescritas acima são recursivas e emitem 302 respostas até que todas as seqüências /./ e /../ sejam corretamente removidas.
Como alternativa, o mesmo pode ser obtido usando um redirecionamento interno, colocando as instruções rewrite...last dentro de um bloco location adequado. Por exemplo:
location / {
rewrite ^(.*)/\./(.*)$ $1/$2 last;
rewrite ^(.*)/(?!\.\.)[^/]+/\.\./(.*)$ $1/$2 last;
}
Nesse caso, o URL exibido na barra de endereços do navegador não será alterado.
Veja este documento para obter detalhes sobre a diretiva rewrite e este link para obter detalhes sobre a afirmação de antecipação negativa.