usando barras à direita na configuração do nginx

8
    location /product {
        proxy_pass http://10.0.0.25:8080;
    }

se eu usar minha primeira descrição de local para a pasta do produto, devo usá-lo http://mysdomain.com/product/e não posso usá-lo http://mysdomain.com/productno navegador. Quero dizer, eu deveria usar uma barra final de URL. Quero acessar a pasta do produto com duas instruções.

existe diferença entre isso:

    location /product/ {
        proxy_pass http://10.0.0.25:8080;
    }
Barteloma
fonte

Respostas:

10

Esses locais são diferentes. O primeiro corresponderá, /productionpor exemplo, que pode não ser o que você esperava. Por isso, prefiro usar locais com uma barra à direita.

Observe também que:

Se um local é definido por uma sequência de prefixos que termina com o caractere de barra, e as solicitações são processadas por proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass ou memcached_pass, em resposta a uma solicitação com URI igual a essa sequência, mas sem o barra final, um redirecionamento permanente com o código 301 será retornado para o URI solicitado com a barra anexada.

Se você tem algo como:

location /product/ {
    proxy_pass http://backend;
}

e vá para http://example.com/product, o nginx o redirecionará automaticamente para http://example.com/product/.

Mesmo se você não usar uma dessas diretivas acima, sempre poderá fazer o redirecionamento manualmente:

location = /product {
    rewrite ^ /product/ permanent;
}

ou, se você não quiser redirecionar, poderá usar:

location = /product {
    proxy_pass http://backend;
}
Alexey Ten
fonte
Estou usando proxy_pass myip: 8080 / product e chamo o navegador por este endereço. Navegador me redireciona para myip / produto e dá página de erro não pode visualizar.
barteloma
Use backticks para código. O Markdown analisou o seu comentário e é difícil descobrir qual é realmente o seu código.
Alexey Ten
Obrigado, era importante saber que se / product / for adicionado, mesmo o navegador envia / product está vinculado a receber o 301 do servidor. Ponto bastante válido, de fato.
Sur Max
3

Não, eles não são os mesmos - você precisará usar uma barra final com uma expressão regular para corresponder a ambos, ou seja,

location ~ /product/?

Consulte esta resposta relacionada para obter uma resposta mais detalhada sobre como corresponder ao URL inteiro.

Andrew M.
fonte