nginx reverse_proxy do local para URL específico

nginx reverse_proxy do local para URL específico

eu sou novo no nginx. Eu tenho nginx e um servidor web python que escuta nas portas: 5000.

Eu quero fazer algo assim www.example.com/berlin e quero obter os dados de 127.0.0.1/?lat=Berlim&lon=Berlim

Não sei como definir uma string de consulta que será usada se eu solicitar o local.

    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/;
        }
    }

Responder1

Experimente isto:

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;
    }
}

O segundo bloco de localização captura o "berlin" se example.com/berlin for solicitado e então isso é passado para o servidor da web como parâmetros de consulta.

Mas observe que isso parece ser uma péssima ideia, pois corresponderia a qualquer coisa que não esteja solicitando sua página inicial ( /). Assim, mesmo a solicitação de example.com/index.html seria passada para o servidor web como /?lat=index.html&lon=index.html. Você pode evitar isso usando algum tipo de prefixo como example.com/city/berlin ou melhorando o regex do segundo bloco de localização para não corresponder a certas coisas como index.html

informação relacionada