usando barras à direita na configuração nginx

5
    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 usar http://mysdomain.com/product/ e não posso usar http://mysdomain.com/product do navegador. Quer dizer, eu deveria usar uma barra de fim de url. Eu quero acessar pasta do produto com dois stuation.

existe diferença entre isso:

    location /product/ {
        proxy_pass http://10.0.0.25:8080;
    }
    
por barteloma 24.06.2014 / 20:06

2 respostas

7

Esses locais são diferentes. O primeiro corresponderá a /production , por exemplo, que pode não ser o esperado. Então, prefiro usar locais com uma barra final.

Além disso, observe que:

If a location is defined by a prefix string that ends with the slash character, and requests are processed by one of proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, or memcached_pass, then in response to a request with URI equal to this string, but without the trailing slash, a permanent redirect with the code 301 will be returned to the requested URI with the slash appended.

Se você tem algo como:

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

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

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

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

ou, se você não quiser redirecionar, use:

location = /product {
    proxy_pass http://backend;
}
    
por 25.06.2014 / 07:49
3

Não, estes não são os mesmos - você precisará usar uma barra à direita com um regex para corresponder a ambos, ou seja,

location ~ /product/?

Veja esta resposta relacionada para uma resposta mais detalhada sobre como combinar o URL inteiro.

    
por 24.06.2014 / 20:12

Tags