nginx reverse_proxy из местоположения на определенный URL

nginx reverse_proxy из местоположения на определенный URL

Я новичок в nginx. У меня есть nginx и веб-сервер python, которые слушают порты :5000.

Я хочу сделать что-то вроде www.example.com/berlin и хочу получить данные из 127.0.0.1/?lat=Берлин&лон=Берлин

Я не знаю, как задать строку запроса, которая будет использоваться при запросе местоположения.

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

решение1

Попробуй это:

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

Второй блок местоположения захватывает «berlin», если запрашивается example.com/berlin, а затем он передается на веб-сервер в качестве параметров запроса.

Но, пожалуйста, обратите внимание, что это, кажется, довольно плохая идея, поскольку это будет соответствовать всему, что не запрашивает вашу домашнюю страницу ( /). Таким образом, даже запрос example.com/index.html будет передан на веб-сервер как /?lat=index.html&lon=index.html. Вы можете предотвратить это, используя какой-либо префикс, например example.com/city/berlin, или улучшив регулярное выражение второго блока местоположения, чтобы не соответствовать определенным вещам, например index.html

Связанный контент