programing

Spring Boot 2.2.0에서의 x-forwarded 헤더에 대처하는 방법(역프록시 배후에 있는 Spring Web MVC)

testmans 2023. 3. 26. 09:58
반응형

Spring Boot 2.2.0에서의 x-forwarded 헤더에 대처하는 방법(역프록시 배후에 있는 Spring Web MVC)

Spring Web MVC를 사용한Spring Boot 2.2.0 어플리케이션이 리버스 프록시 뒤에서 실행되고 있습니다.봄은 어떻게 적절하게 대처할 수 있는가?X-Forwarded-{Prefix,Host,Proto}- 서버에 대한 실제 요청을 인식할 수 없습니다.

Spring Boot <= 2.1.x에서는ForwardedHeaderFilterSpring Boot 2.2.0 이후로는 안 해도 돼요.추가만 하면 됩니다.server.forward-headers-strategy=NATIVE또는server.forward-headers-strategy=FRAMEWORK고객님께application.properties- 파일.

NATIVEservlet 컨테이너(예: 언더토우, tomcat)가 이 문제를 해결하고 있는 것을 의미합니다.x-forwarded-*- 대부분의 경우 정상입니다.의지하고 있는 경우X-Forwarded-Prefix필요이상으로FRAMEWORK하도록request.getContextPath()올바르게 설정되어 있습니다.


예:

  1. 브라우저에 사용자 입력:https://mydomain.tld/my-microservice/actuator
  2. 마이크로 서비스 "my-microservice"(예: 사용자 서비스)가 요청을 처리합니다. localhost: 8080에서 실행됩니다.
  3. reverse-display는 다음과 같이 요구를 전송합니다.

    // Forwarded-Request from Reverse Proxy to your microservice
    GET http://localhost:8080/actuator/
    X-Forwarded-Host: mydomain.tld
    X-Forwarded-Proto: https
    X-Forwarded-Prefix: /my-microservice
    

Http ServletRequest에 디버깅하면 다음과 같은 결과가 됩니다.

request.getRequestURL(): "https://mydomain.tld/my-microservice/actuator/"
request.getScheme(): "https"
request.getContextPath(): "/my-microservice"
new UrlPathHelper().getPathWithinApplication(request): "/actuator"

언급URL : https://stackoverflow.com/questions/59126518/how-to-cope-with-x-forwarded-headers-in-spring-boot-2-2-0-spring-web-mvc-behin

반응형