Remove a barra final opcional antes do proxy

1

Gostaria de fazer proxy de algumas solicitações para outro servidor e nunca enviar a barra final. Eu venho com o seguinte, que está funcionando, mas isso é realmente o melhor caminho? Parece um pouco como eu estou tomando o caminho mais longo, embora talvez eu tenha ficado olhando para ele por muito tempo ...

location ~ ^/proxy(?<proxy_to_path>.+[^/])/?$ {
    proxy_pass              http://127.0.0.1:8080$proxy_to_path;
}
    
por DanH 20.06.2017 / 14:48

1 resposta

2

Pessoalmente, não gosto de expressões regulares complexas em location directives, porque nginx precisa testar cada URI solicitado. Você pode usar um esquema indiscutivelmente mais simples usando uma ou mais instruções rewrite...break .

Por exemplo:

location ^~ /proxy/ {
    rewrite ^/proxy(.+?)/?$ $1 break;
    proxy_pass http://127.0.0.1:8080;
}

O modificador ^~ evita qualquer interferência de qualquer bloco de localização de expressão regular. Consulte este documento para saber mais.

A captura não é voraz para que o% trailing / opcional seja removido.

    
por 20.06.2017 / 15:11