nginx reverse_proxy desde la ubicación a una URL específica

nginx reverse_proxy desde la ubicación a una URL específica

Soy nuevo en nginx. Tengo nginx y un servidor web Python que escucha en los puertos: 5000.

Quiero hacer algo así www.example.com/berlin y quiero obtener los datos de 127.0.0.1/?lat=Berlina&lón=Berlina

No sé cómo configurar una cadena de consulta que se utiliza si solicito la ubicación.

    server {
        listen 80;

        location / {
               proxy_pass http://127.0.0.1:5000/;
        }

        location /berlin/ {
                proxy_pass http://127.0.0.1:5000/?lat=52.5185931&lon=13.3941181/;
        }
    }

Respuesta1

Prueba esto:

server {
    listen 80;

    location = / {
           proxy_pass http://127.0.0.1:5000/;
    }

    location ~ ^\/(.*)$ {
            proxy_pass http://127.0.0.1:5000/?lat=$1&lon=$1;
    }
}

El segundo bloque de ubicación captura "berlín" si se solicita ejemplo.com/berlin y luego se pasa al servidor web como parámetros de consulta.

Pero tenga en cuenta que esto parece ser una idea bastante mala, ya que coincidiría con cualquier cosa que no solicite su página de inicio ( /). Por lo tanto, incluso la solicitud de example.com/index.html se pasaría al servidor web como /?lat=index.html&lon=index.html. Podrías evitar esto usando algún tipo de prefijo como ejemplo.com/city/berlin o mejorando la expresión regular del segundo bloque de ubicación para que no coincida con ciertas cosas como index.html

información relacionada