ルールの書き換え nginx、トークン

ルールの書き換え nginx、トークン

nginxプロキシパスの背後にあるJavaアプリケーションがあります。 URLが呼び出されると、アプリケーションは提供されたコンテンツへのパスを自動的に生成します。

だから、電話すれば手にhttps://somedomain.com入るhttps://somedomain.com/todayisaniceday

以下は、nginxのプロキシ転送ディレクティブと書き換えルールです。

    location /URI{
    proxy_pass      http://IP:PORT/URI;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $http_host;
}

location ~ ^/([a-zA-Z0-9=\?]+)$ {
    rewrite ^/(.*)$ / break;
}

トークン認証メカニズムを実装しています。

私が達成したいのは次のとおりです。

電話するとき:

https://somedomain.com/something?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

URLは保持され、Javaアプリケーションによって書き換えられません。したがって、デフォルトでは、?jwt=URLにこの文字列が含まれている場合は、この文字列とそれに続くすべての内容を保持する必要があります。

私は次のことを試しています:

rewrite ^/(.*)$ /?jwt=$1 break;しかし、成功しませんでした。

どんなアイデアがありますか?

助けてくれてありがとう。

ベストアンサー1

場所セクションで条件を試してください。

if ($request_uri !~ (.+(jwt=).+) ) {
    rewrite ^/(.*)$ / break;
}

必要に応じてrequest_uriの正規表現を変更する必要があります。

おすすめ記事