es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo reescribir la URL en Nginx Regex y depurar?

Estoy tratando de eliminar /api/v1 de la URL de la solicitud y simplemente pasar el resto de la parte. Por ejemplo, /api/v1/test/ como simplemente /test. /api/v1/test/ready como simplemente /test/ready.

Esto es lo que he intentado. Estoy pensando que el primer parámetro, es decir, $1, se capturará en ^(/api/v1) y el resto de la parte se capturará (.*?). Por lo tanto, simplemente estoy pasando $2 y dividiéndolo. Sin embargo, no está funcionando. No estoy seguro de qué estoy haciendo mal. Intenté hacer alguna depuración pero no lo logré.

location /api/v1 {
      rewrite ^(/api/v1)(.*?) $2; break;
      # intenté return 200 $2;
      # Pero esto nunca se alcanzará ya que se está reescribiendo
      # las reglas se evaluarán nuevamente.
      # Supongo que break no permitirá que se ejecute nuevamente para las reglas.
      include uwsgi_params;
      uwsgi_pass 10.0.2.15:3031;
    }

Estaba intentando depurarlo pero no pude.
Nunca llega a la ubicación /. Por ejemplo.

location / {
             return 200 $request_uri;
      }
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para eliminar /api/v1 de la URL de la solicitud y pasar el resto de la parte, puedes usar la siguiente expresión regular:

    rewrite ^/api/v1/(.*)$ /$1 break;
    

    Esto capturará cualquier cosa después de /api/v1/ y la almacenará en la variable $1. Luego, reescribirá la URL para incluir solo $1, eliminando efectivamente /api/v1.

    Aquí tienes el código actualizado para tu configuración de nginx:

    location /api/v1 {
      rewrite ^/api/v1/(.*)$ /$1 break;
      include uwsgi_params;
      uwsgi_pass 10.0.2.15:3031;
    }
    

    Ahora, cuando se reciba una solicitud para /api/v1/test/, se reescribirá como /test/ y se enviará al backend uwsgi.

    Ten en cuenta que es posible que debas ajustar otras partes de tu configuración para asegurarte de que las URLs reescritas sean manejadas correctamente por otros componentes.

Comments are closed.