규칙 재작성 nginx, 토큰

규칙 재작성 nginx, 토큰

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의 정규식을 변경해야 합니다.

관련 정보