我有一个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 的正则表达式