usando barre finali nella configurazione di nginx


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

se uso la mia prima descrizione della posizione per la cartella del prodotto, dovrei usare http://mysdomain.com/product/e non posso usare http://mysdomain.com/productdal browser. Voglio dire, dovrei usare una barra dell'URL. Voglio accedere alla cartella del prodotto con due fasi.

c'è differenza tra questo:

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

Risposte:


10

Queste posizioni sono diverse. Il primo corrisponderà /productionad esempio, potrebbe non essere quello che ti aspettavi. Quindi preferisco usare posizioni con una barra finale.

Inoltre, si noti che:

Se un percorso è definito da una stringa di prefisso che termina con il carattere barra, e le richieste vengono elaborate da uno di proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass o memcached_pass, quindi in risposta a una richiesta con URI uguale a questa stringa, ma senza il barra finale, un reindirizzamento permanente con il codice 301 verrà restituito all'URI richiesto con la barra aggiunta.

Se hai qualcosa come:

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

e vai a http://example.com/product, nginx ti reindirizzerà automaticamente a http://example.com/product/.

Anche se non usi una di queste direttive sopra, puoi sempre eseguire il reindirizzamento manualmente:

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

oppure, se non desideri il reindirizzamento, puoi utilizzare:

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

Sto usando proxy_pass myip: 8080 / product , quindi chiamo il browser questo indirizzo. Browser mi reindirizza a myip / product e dà pagina di errore non può visualizzare.
barteloma,

Usa i backtick per il codice. Markdown ha analizzato il tuo commento ed è difficile scoprire qual è il tuo codice.
Alexey Ten,

Grazie, era importante sapere che se / product / viene aggiunto, anche il browser che lo invia / product è destinato a ricevere il 301 dal server. Punto abbastanza valido davvero.
Sur Max,

3

No, questi non sono gli stessi: dovrai usare una barra finale con una regex per abbinare entrambi, cioè

location ~ /product/?

Vedi questa risposta correlata per una risposta più dettagliata su come abbinare l'intero URL.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.