nginx reverse_proxy vom Standort zu einer bestimmten URL

nginx reverse_proxy vom Standort zu einer bestimmten URL

ich bin neu bei Nginx. Ich habe Nginx und einen Python-Webserver, der auf Port :5000 lauscht.

Ich möchte so etwas machen www.example.com/berlin und möchte die Daten von 127.0.0.1/?lat= bekommenBerlin&lon=Berlin

Ich weiß nicht, wie ich eine Abfragezeichenfolge festlege, die verwendet wird, wenn ich den Standort anfordere.

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

Antwort1

Versuche dies:

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

Der zweite Standortblock erfasst „Berlin“, wenn example.com/berlin angefordert wird, und übergibt dies dann als Abfrageparameter an den Webserver.

Beachten Sie jedoch, dass dies eine ziemlich schlechte Idee zu sein scheint, da dies auf alles zutrifft, was nicht Ihre Homepage anfordert ( /). Daher würde sogar die Anforderung von example.com/index.html als /?lat=index.html&lon=index.html an den Webserver übergeben. Sie könnten dies verhindern, indem Sie eine Art Präfix wie example.com/city/berlin verwenden oder indem Sie den regulären Ausdruck des zweiten Standortblocks verbessern, damit er nicht auf bestimmte Dinge wie index.html zutrifft.

verwandte Informationen