Правило перезаписи nginx, токен

У меня есть приложение 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; , но безуспешно.

Есть идеи?

Спасибо за помощь.

0
06.06.2017, 17:02
1 ответ

Попробуйте условные обозначения в разделе вашего местоположения:

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

Вы должны изменить регулярное выражение для запроса _uri в соответствии с вашими потребностями

0
28.01.2020, 04:44

Теги

Похожие вопросы