스프링부트 : 3.20
현재 백엔드는 정상 배포를 해놨지만 스웨거는 로컬에서만 사용했다.
이렇게 서버가 http://localhost:8080으로 두고 뒤에 api 경로를 넣어서 테스트를 진행했었는데
스웨거를 반만 사용하는 느낌이 들었다.
API 명세를 간편하게 관리한다는 장점이 있지만, 동시에 프론트가 따로 postman이나 로컬 서버를 켜지 않더라도 스웨거 테스트를 통해 입력과 출력을 봐야 한다는 생각이 들었다.
그래서 배포해놓은 주소로 스웨거를 들어가봤다.
들어가지긴 하는데 기본 서버가 http://localhost:8081로 잡혀있다.
근데 여기서 의문이 생겼던 점은 왜 8081로 잡히는가? 였다.
현재 로컬에 있는 yml과 도커에 있는 yml은 다른 게 없다. 심지어 스프링부트 포트 설정도 그대로다.
허나 8081로 잡혀있는 곳이 딱 한군데, 현재 스프링부트를 구성하고 있는 도커에서 호스트가 8081로 잡혀있다.
즉 외부에서 8081로 요청을 보내면 내부에 있는 스프링부트 8080으로 요청을 보내는데, 인터넷에서 알아보니 스웨거가 자동으로 호스트를 참조한다는 것을 알게 되었다.
그러면 우리가 원하는 바는 스웨거에서 http://서버도메인/api/~~ 이렇게 보내면 nginx에서 https로 리다이렉트 시키고
api가 붙어있으니 내부의 http://localhost:8081로 다시 연결을 보내주어야 한다.
그래야 호스트가 8081로 들어오는 것을 잡아서 내부 스프링부트로 명령을 전달하기에.
흐름의 총 정리를 진행해보자.
1. http://서버주소/api/user/login 여기로 클라이언트가 요청을 보낸다.
2. nginx가 http를 https로 바꿔서 리다이렉트를 시키고, https://서버주소/api/user/login으로 들어온 요청을 리버스 프록시한다.
3. 현재 /api로 들어오는 건 http://localhost:8081로 보내게 설정을 해두었으니 http://localhost:8081/api/user/login으로 요청이 전달된다.
4. 도커 컨테이너중에 호스트가 8081인 애가 잡아서 내부 8080포트인 스프링부트로 명령을 전달해준다.
내가 지금부터 진행해야 하는 부분은 서버에 배포된 Swagger의 기본 서버 주소를 변경해야한다.
현재 : http://localhost:8081
변경 : https://서버주소
현재 SpringDocConfig에 설정을 하나 추가해주었다.
@OpenAPIDefinition(
servers = {@Server(url ="서버주소", description = "기본 서버 주소")},
이렇게 url에 서버 주소를 추가해주면 기본 서버 주소가 변경된다.
'프로젝트 > 씈크럼 프로젝트' 카테고리의 다른 글
쿼리 메서드 사용으로 인한 성능 개선 (0) | 2024.02.09 |
---|---|
조작된 토큰으로 SignatureException 발생 예외 처리 (0) | 2024.02.02 |
현재 스프링부트 프로젝트에 유효성 검사 진행하기 (1) | 2024.01.31 |
Reflection을 이용한 테스트 코드 작성 (1) | 2024.01.29 |