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