Puncte:0

nginx config reverse proxy lose basepath on redirect without slash

drapel in

i have the following nginx configs to redirect the url path to it's perspective services

server {
    listen 80;
    server_name abc.com;
    location = favicon.ico { access_log off; log_not_found off }
    
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_cache_bypass $http_upgrade;
    

    location /a-ms/ {
       rewrite /a-ms/(.*) /$1 break;
       proxy_pass http:host.docker.internal:3000/;
    }
    
    location /b-ms/ {
       rewrite /b-ms/(.*) /$1 break;
       proxy_pass http:host.docker.internal:4000/;
    }
    
}

the backend microservices using nodejs to host the api and swagger doc

When i got to a url from a browser like abc.com/a-ms/doc/ it return the swagger normal, but when i go to url without slash for example abc.com/a-ms/doc it redirected me to abc.com/doc which is not what i wanted(it missing the location path)(. How do i fix this with nginx config settings?

Richard Smith avatar
drapel jp
Puteți folosi [`proxy_redirect`](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect) pentru a corecta un răspuns 3xx din aplicația dvs.Utilizați: `curl -I http://example.com/a-ms/doc` pentru a identifica valoarea exactă a antetului de răspuns http `Locație`.
Linh Nguyen avatar
drapel in
@RichardSmith Primesc `HTTP/1.1 301 Moved Permanently` de la curl -i, cum ar trebui să pun valoarea proxy_redirect?
Richard Smith avatar
drapel jp
S-a folosit „-I” („I” majuscule) pentru a vedea valoarea antetului de răspuns „Locație:”.
Linh Nguyen avatar
drapel in
@RichardSmith am verificat și locația este /doc/. Mi-am actualizat fișierul de configurare nginx cu proxy_redirect /doc /a-ms/doc și acum funcționează. Mulțumesc!
Puncte:0
drapel in

urmând sugestia lui RichardSmith de utilizare proxy_redirect iar acum redirecționarea locației mele este corectă și a inclus calea locației

locație /a-ms/ {
   rescrie /a-ms/(.*) /$1 pauză;
   proxy_pass http:host.docker.internal:3000/;
   proxy_redirect /doc /a-ms/doc; #adaugă asta
}
    
locație /b-ms/ {
   rescrie /b-ms/(.*) /$1 pauză;
   proxy_pass http:host.docker.internal:4000/;
   proxy_redirect /doc /b-ms/doc; #adaugă asta
}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.