У меня есть приложение 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-приложением.
То есть, когда в URL-адресе есть строка ? Jwt =
, она и все, что за ней стоит.
Я пробовал что-то вроде этого:
rewrite ^ / (. *) $ /? Jwt = $ 1 break;
, но безуспешно.
Есть идеи?
Спасибо за помощь.
Попробуйте условные обозначения в разделе вашего местоположения:
if ($request_uri !~ (.+(jwt=).+) ) {
rewrite ^/(.*)$ / break;
}
Вы должны изменить регулярное выражение для запроса _uri в соответствии с вашими потребностями