nginx reverse_proxy de local para URL específico

1

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

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

Eu não sei como definir uma string de consulta que é usada se eu solicitar a localização.

    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/;
        }
    }
    
por Ifen 03.03.2018 / 17:05

1 resposta

0

Tente 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 reqested e então isso é passado para o websever como parâmetros de consulta.

Mas, por favor, note que isso parece ser uma péssima idéia, já que isso corresponderia a qualquer coisa que não esteja solicitando sua home page ( / ). Assim, mesmo a solicitação de example.com/index.html seria passada para o servidor da Web como /?lat=index.html&lon=index.html. Você poderia evitar isso usando algum tipo de prefixo como example.com/city/berlin ou aprimorando a regex do segundo bloco de localização para não corresponder a determinadas coisas como index.html

    
por 04.03.2018 / 10:35