작성
·
443
·
수정됨
0
안녕하세요! 선생님!
선생님의 강의를듣고
nest프로젝트를 lightsail에 배포성공하였습니다.
헌데 별도의 인증서를 적용해주지 않으면
http 프로토콜로 api서버가 만들어져서
https를 적용하기위해 인증서를 발급받고
적용하니 https로도 서버를 접근할수있게되었습니다.
근데 여기서 문제가 생겼습니다.
저는 nest 프로젝트에서
서버는 80 포트를 열고
소켓은 8181포트를 열었습니다.
lightsail에서 방화벽으로
http 80
https 443 으로 등록해놓았기때문에
프로젝트에서
서버가 80번포트로 열렸던것은 문제가 되지 않았으나
프로젝트에서
소켓이 8181번포트로 열어놓았던것은
cors문제가 생겨 소켓연결이 안되더라구요
그래서 lightsail에서
https로 8181 등록해주면되는건가?
했는데 https로 8181등록되지 않아서
custom으로 8181포트를 열어주면 되는건가?
싶어서 8181포트도 방화벽에서 열어주었는데
http에서만 8181포트가 open되는거지
https에서는 8181포트가 여전히 허용되지 않더라구요ㅜㅜ
어찌하면 이문제를 해결할수있을까요?
참고로
현재 프론트 프로젝트를 amplify에 호스팅해놓아서
프론트웹서버의 static ip를 알수없는상황입니다!!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
님의 상황에서 NestJS 프로젝트를 AWS Lightsail에 배포하면서 8181번 포트로 열어둔 소켓 연결이 CORS 문제로 인해 https에서 작동하지 않는다고 하셨군요. HTTPS 연결을 위해서는 SSL/TLS 인증서를 적용하셔야 하는데, 80번 포트와 443번 포트를 이용한 HTTP 및 HTTPS 연결은 성공적이라고 합니다.
그리고 AWS Lightsail의 방화벽 설정에서 8181 포트는 custom으로 HTTP 트래픽에 대해서만 열어두셨고, HTTPS 트래픽에는 적용되지 않는다고 하셨습니다. 이 경우, CORS 오류 해결을 위해서는 서버와 클라이언트 간의 HTTPS 연결이 필요하므로, 클라이언트 (프론트엔드)와 서버 (백엔드) 간의 통신을 HTTPS를 통해 이루어져야합니다.
보통 HTTP와 HTTPS 트래픽은 각각 80번과 443번 포트를 사용하므로, 8181번 포트에 대해 HTTPS 연결을 허용하기 위해서는 리버스 프록시를 설정하거나, 웹 서버(예: Nginx, Apache)를 활용하여 HTTPS 요청을 8181번 포트로 프록시하는 방법이 있습니다. 이를 설정하기 위해서는 해당 웹 서버의 SSL 설정을 구성해야 합니다. 게시하신 내용 중에는 이에 대한 정보가 포함되어 있지 않으나, 이러한 내용은 일반적으로 SSL 설정에 관련된 사항이므로 참고하실 수 있을 것입니다.
AWS Amplify를 사용하는 경우에는 static IP가 아니므로, CORS 정책에 특정 IP 대신 도메인을 허용해주어야 할 수도 있습니다. 서버 측에서 CORS 설정을 잘 확인해보시고, 필요하다면 허용 도메인을 여러분의 프론트엔드 호스트명으로 지정하여 적용해보시기 바랍니다.
추가 질문이 있으시면 언제든지 도움을 드릴 준비가 되어 있습니다.