El proxy inverso de configuración de nginx pierde la ruta base al redirigir sin barra diagonal

El proxy inverso de configuración de nginx pierde la ruta base al redirigir sin barra diagonal

Tengo las siguientes configuraciones de nginx para redirigir la ruta URL a sus servicios en 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/;
    }
    
}

Los microservicios backend que utilizan nodejs para alojar la API y el documento Swagger.

Cuando llegué a una URL desde un navegador, abc.com/a-ms/doc/devuelve la arrogancia normal, pero cuando voy a la URL sin barra, por ejemplo, abc.com/a-ms/docme redirige a abc.com/doclo que no es lo que quería (falta la ruta de ubicación) (. ¿Cómo soluciono esto? con la configuración de nginx?

Respuesta1

siguiendo la sugerencia de RichardSmith de usarredirección_proxyy ahora mi redirección de ubicación es correcta e incluye la ruta de ubicación

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
}

información relacionada