Reverse proxy를 적용한 배포 환경 서버의 Swagger 접속시, Failed to load remote configuration 오류 발생시 해결 방법

November 10, 2023


문제 상황

배포한 서버상 Swagger의 메인 페이지에 접속시, Failed to load remote configuration 에러 발생

해결 방안

리버스 프록시를 적용하지 않았던 경우, 문제가 없었기에 해당 문제 키워드로 검색한 결과, 커스텀 헤더를 적용해서 해결할 수 있었습니다.

  1. nginx에서 reverse proxy로 설정한 부분에서 X-Forwarded-Prefix 추가
location /my-api {
    rewrite ^/my-api(.*) $1 break;
    proxy_pass $service_url;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Prefix /my-api; # <- 추가한 부분
    ...

그러나 X-Forwarded-Prefix 헤더는 공식적으로 표준 HTTP 헤더가 아닙니다. 대신, 일부 웹 서버나 프록시 서버에서 사용되는 관례적인 헤더 중 하나입니다.

그래서 스프링 서버에서 이를 인식하기 위한 추가적인 설정이 필요합니다.

  1. 커스텀 헤더를 설정했기 때문에 ForwardedHeaderFilter를 bean으로 등록
@Bean
ForwardedHeaderFilter forwardedHeaderFilter() {
    return new ForwardedHeaderFilter();
}

그리고 배포한 서버의 swagger 주소인 /swagger-ui/index.html#/로 접속한다면 정상적인 swagger 화면을 볼 수 있습니다.

링크

해당 이슈 깃허브


Profile picture

이재원

이해하기 쉬운 코드를 작성하려 고민합니다.


© 2024 Won's blog Built with Gatsby