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の正規表現を変更する必要があります。