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

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

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

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

    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
задан 3 March 2018 в 18:05
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 реквизит и затем передается в websever в качестве параметров запроса.

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

.
0
ответ дан 4 December 2019 в 04:13

Теги

Похожие вопросы