O proxy reverso da configuração nginx perde o caminho base no redirecionamento sem barra

O proxy reverso da configuração nginx perde o caminho base no redirecionamento sem barra

eu tenho as seguintes configurações do nginx para redirecionar o caminho do URL para seus serviços de perspectiva

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

os microsserviços de back-end usando nodejs para hospedar a API e o documento swagger

Quando cheguei a uma url de um navegador como abc.com/a-ms/doc/esse, retorne o swagger normal, mas quando vou para a url sem barra, por exemplo, abc.com/a-ms/docele me redirecionou para abc.com/doco que não era o que eu queria (falta o caminho do local) (. Como faço para corrigir isso com configurações do nginx?

Responder1

seguindo a sugestão de RichardSmith de usarproxy_redirecte agora meu redirecionamento de localização está correto e inclui o caminho de localização

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

informação relacionada