Nginx, Weblogic y proxy inverso por ruta

Nginx, Weblogic y proxy inverso por ruta

Tengo problemas para que mi proxy inverso funcione cuando uso una ruta en nginx. Lo que intento hacer es tener una dirección para una aplicación y dictar el entorno con la ruta. Dependiendo de la ruta, apuntaría a un servidor diferente. Puedo hacer que el proxy inverso funcione cuando uso un enlace directo, pero al usar una ruta aparece un error 404.

app.foo.bar/dev = error 404 devapp.foo.bar = éxito

¿Qué he hecho mal en app.foo.bar/dev?

Aquí está la configuración del proxy inverso que funciona, pero prefiero no usarla:

server  {
  listen  80;   # DEV Application Proxy
  server_name  devapp.foo.bar;
  location  / {
    proxy_pass  http://appserver.foo.bar:7010;
    proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-for $remote_addr;
        port_in_redirect off;
        proxy_redirect   http://appserver.foo.bar:7010/ /;
        proxy_connect_timeout 300;
    }
  }

Aquí hay una parte de lo que quiero hacer usando la ruta, pero obtengo el error 404.

# APP Environment Proxy

server {

  listen 80;
  server_name app.foo.bar;
     location /dev {
      proxy_pass http://appserver.foo.bar:7010;
      proxy_set_header    Host            $host;
      proxy_set_header    X-Real-IP       $remote_addr;
      proxy_set_header    X-Forwarded-for $remote_addr;
      port_in_redirect off;
      proxy_redirect     http://appserver.foo.bar:7010 /;
      proxy_connect_timeout 300;

  }
}

Busqué en Google este tipo de configuración, pero no puedo encontrar una solución. Gracias de antemano por cualquier ayuda.

Respuesta1

Cuando lo haya hecho proxy_pass http://appserver.foo.bar:7010;, nginx agrega el URI normalizado a la URL de solicitud pasada al backend.

Entonces, cuando realiza una solicitud http://app.foo.bar/dev, la solicitud va a http://appserver.foo.bar:7010/dev. Si su servidor de desarrollo no tiene esta ruta, devolverá 404, que nginx devuelve al cliente.

Si desea que todas las solicitudes que comiencen con http://app.foo.bar/devvayan a http://appserver.foo.bar:7010tal que el resto del URI se agregue al URI del servidor backend, puede usar esta configuración:

location ~ ^/dev(.+)$ {
    proxy_pass http://appserver.foo.bar:7010$1$is_args$args;
    ...
}

Entonces, capturamos la parte posterior /devcon expresiones regulares en una variable y luego agregamos esa variable al final de la proxy_passruta.

información relacionada