en utilisant des barres obliques de fin dans la configuration nginx

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

si j'utilise ma première description d'emplacement pour le dossier du produit, je dois l'utiliser http://mysdomain.com/product/et je ne peux pas l'utiliser à http://mysdomain.com/productpartir du navigateur. Je veux dire que je devrais utiliser une barre oblique. Je veux accéder au dossier du produit avec deux stations.

y a-t-il une différence entre cela:

    location /product/ {
        proxy_pass http://10.0.0.25:8080;
    }
bartélome
la source

Réponses:

10

Ces emplacements sont différents. Le premier correspondra /productionpar exemple, ce n'est peut-être pas ce que vous attendiez. Je préfère donc utiliser des emplacements avec une barre oblique de fin.

Notez également que:

Si un emplacement est défini par une chaîne de préfixe qui se termine par le caractère barre oblique et que les demandes sont traitées par l'un des proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass ou memcached_pass, alors en réponse à une demande avec un URI égal à cette chaîne, mais sans le barre oblique de fin, une redirection permanente avec le code 301 sera renvoyée à l'URI demandé avec la barre oblique ajoutée.

Si vous avez quelque chose comme:

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

et allez à http://example.com/product, nginx vous redirigera automatiquement vers http://example.com/product/.

Même si vous n'utilisez pas l'une de ces directives ci-dessus, vous pouvez toujours effectuer la redirection manuellement:

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

ou, si vous ne voulez pas de redirection, vous pouvez utiliser:

location = /product {
    proxy_pass http://backend;
}
Alexey Ten
la source
J'utilise proxy_pass myip: 8080 / product , puis appelez le navigateur à cette adresse. Le navigateur me redirige vers myip / produit et donne la page d'erreur ne peut pas voir.
barteloma
Utilisez des astuces pour le code. Markdown a analysé vos commentaires et il est difficile de savoir quel est réellement votre code.
Alexey Ten
Merci, il était important de savoir que si / product / est ajouté, même le navigateur qui l'envoie / product est tenu de recevoir le 301 du serveur. Point tout à fait valable en effet.
Sur Max
3

Non, ce ne sont pas les mêmes - vous devrez utiliser une barre oblique de fin avec une expression régulière pour correspondre aux deux, c.-à-d.

location ~ /product/?

Voir cette réponse associée pour une réponse plus détaillée sur la façon de faire correspondre l'intégralité de l'URL.

Andrew M.
la source