문제 상황
배포한 서버상 Swagger의 메인 페이지에 접속시, Failed to load remote configuration
에러 발생
해결 방안
리버스 프록시를 적용하지 않았던 경우, 문제가 없었기에 해당 문제 키워드로 검색한 결과, 커스텀 헤더를 적용해서 해결할 수 있었습니다.
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 헤더가 아닙니다. 대신, 일부 웹 서버나 프록시 서버에서 사용되는 관례적인 헤더 중 하나입니다.
그래서 스프링 서버에서 이를 인식하기 위한 추가적인 설정이 필요합니다.
- 커스텀 헤더를 설정했기 때문에
ForwardedHeaderFilter
를 bean으로 등록
@Bean
ForwardedHeaderFilter forwardedHeaderFilter() {
return new ForwardedHeaderFilter();
}
그리고 배포한 서버의 swagger 주소인 /swagger-ui/index.html#/
로 접속한다면 정상적인 swagger 화면을 볼 수 있습니다.