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/doc
me redirige a abc.com/doc
lo 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
}