重写规则nginx、token

重写规则nginx、token

我有一个java应用程序,它位于nginx代理通行证后面。当调用 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 的正则表达式

相关内容