場所から特定の URL への nginx リバースプロキシ

場所から特定の URL への nginx リバースプロキシ

私は nginx を初めて使います。ポート :5000 で listen する 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;
    }
}

2 番目のロケーション ブロックは、example.com/berlin が要求された場合に「berlin」をキャプチャし、これがクエリ パラメータとして Web サーバーに渡されます。

ただし、これはホームページ ( /) を要求していないものすべてに一致するため、かなり悪いアイデアであることに注意してください。したがって、example.com/index.html を要求しても、/?lat=index.html&lon=index.html として Web サーバーに渡されます。example.com/city/berlin のようなプレフィックスを使用するか、2 番目のロケーション ブロックの正規表現を改良して、index.html などの特定のものと一致しないようにすることで、これを防ぐことができます。

関連情報