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;
    }

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;
}

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.