Redireccionar una ruta secundaria a un host externo con Nginx


13

Necesito crear un mapa bastante simple en Nginx redirigiendo una subruta a otro servidor que se encuentre en la misma subred.

  • Servidor Nginx: 192.168.0.2
  • Servidor Tomcat: 192.168.0.3:8443

Traté de poner esto en la sección del servidor

    location /tomcatapi/ {
        rewrite /tomcatapi/(.*) $1 break;
        proxy_pass http://192.168.0.3:8443;
    }

pero todo lo que accedo a http://www.myservice.com/tomcatapi/ es una página de 500 errores y en el archivo de registro nginx tengo este error:

    the rewritten URI has a zero length

¿Qué me falta en esta conf?

Respuestas:


12

Veamos tu línea de reescritura:

rewrite /tomcatapi/(.*) $1 break;

Está tomando el bit entre paréntesis (es decir, todo lo que está después /tomcatapi/), que se asigna $1, y lo usa como el único contenido de su URI reescrito.

En su ejemplo, no hay nada después /tomcatapi/, por lo que la reescritura termina vacía, y esto es por lo que nginx se queja.

Si cambia la regla de reescritura a

rewrite /tomcatapi/(.*) /$1 break;

entonces siempre terminarás con al menos /en la salida de reescritura.


Gracias por su respuesta, de todos modos agregué el "/", pero ahora accediendo a la url, el navegador está atascado en el estado de carga y en el archivo de registro veo ahora un error diferente: el flujo ascendente no envió un encabezado HTTP / 1.0 válido al leer el encabezado de respuesta del flujo ascendente
carlo.polisini

¿Qué dicen los registros en su servidor Tomcat?
Flup

Encontré el error, ¡el error fue que la aplicación solo estaba disponible en https y no en http! Entonces, la sintaxis fue justo después de su corrección, simplemente reemplazó http con https para que funcione.
carlo.polisini
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.