nginx reverse_proxy 위치에서 특정 URL로

nginx reverse_proxy 위치에서 특정 URL로

저는 nginx를 처음 사용합니다. 포트 :5000에서 수신 대기하는 nginx와 Python 웹 서버가 있습니다.

www.example.com/berlin과 같은 작업을 하고 싶고 127.0.0.1/?lat=에서 데이터를 가져오고 싶습니다.베를린&lon=베를린

위치를 요청할 때 사용되는 쿼리 문자열을 설정하는 방법을 모르겠습니다.

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

example.com/berlin이 요청되면 두 번째 위치 블록은 "berlin"을 캡처하고 이는 쿼리 매개변수로 웹서버에 전달됩니다.

/그러나 이는 귀하의 홈 페이지( ) 를 요청하지 않는 모든 항목과 일치하므로 이는 매우 나쁜 생각인 것 같습니다 . 따라서 example.com/index.html을 요청하더라도 /?lat=index.html&lon=index.html로 웹 서버에 전달됩니다. example.com/city/berlin과 같은 일종의 접두사를 사용하거나 index.html과 같은 특정 항목과 일치하지 않도록 두 번째 위치 블록의 정규 표현식을 개선하여 이를 방지할 수 있습니다.

관련 정보