Problem-Solving

AWS : EC2 서버에 연결되지 않을 경우

WebDevLee 2022. 3. 2. 22:23

< 문제상황 >

EC2 인스턴스 생성 후 서버를 키고, 해당 도메인으로 GET요청을 보내니 EC2 서버와 연결되지 않는 문제

 

&amp;amp;amp;lt; EC2 서버 연결 &amp;amp;amp;gt;

 

 


< 접근 1 >

먼저 문제를 크게 나누어 생각해보았다. EC2 서버를 세팅하면서 SSH프로토콜을 사용해 원격으로 서버에 접속했을 때는 접속이 잘 되었지만, HTTP 프로토콜을 브라우저에서 요청을 보내니 통신이 안되는 걸 생각해 해당 EC2 서버의 보안그룹 설정을 해 주었다.

 

: 해당 인스턴스가 속한 보안그룹으로 들어감

 

: 기존에 SSH 프로토콜을 이용한 통신만 가능하던 설정

 

: HTTP 및 HTTPS 통신도 가능하게끔 설정

 

 


< 접근 2 >

보안그룹 재설정 후 다시 EC2 도메인으로 접속하니 여전히 서버와 통신할 수 없었다.
혹시 요청이 잘못가고 있는지, 어떻게 통신되는지 확인하기 위해 개발자도구의 '네트워크' 탭을 이용해 에러 로그를 확인해보았다.

 

: 확인해보니 많이 보던 에러 정책이 보임 : cross-origin 정책

 

에러 로그를 확인 후 cross-origin에서 내 서버에 접근 시 어떻게 응답해야 하는지에 대한 설정을 해주지 않아 통신이 되지 않은 거라고 생각이 들어서, 서버 코드에서 Cross-Origin Resource Sharing정책을 설정해줌.

: node.js 를 사용하여 서버를 구성했기 때문에, 간편히 cors라이브러리를 사용해 설정해주었다.

 

 


< 접근 3 >

보안그룹 및 CORS정책 설정 후에도 여전히 접속이 되지 않았다. 어느 부분이 잘못되었나 고민해보다 보안그룹에서 포트번호를 설정하는 부분이 생각이 났다.
나는 환경변수를 이용해 임의로 3333번 포트를 사용해 서버를 열었지만, 보안그룹의 HTTP설정을 확인해보니 80번 포트로만 통신하게끔 설정이 되어있었다. 구글링을 통해 찾아보니 웹상에서 HTTP프로토콜을 이용해 통신할 때는 80번 포트를 사용한다는 점을 알고 서버의 포트를 변경해주었다.

 

: PORT환경변수로 3333 사용중이었음.

 

: 웹 상에서 HTTP프로토콜 통신은 80번 포트 사용

 

 

=> 그래서 PORT 환경 변수를 80번으로 바꾸고 다시 서버에 접속해보니 잘 통신되는 것을 확인할 수 있었다!

 

 


< 해결 과정 >

1. EC2의 보안그룹 설정

2. Cross Origin 요청 설정

3. 포트번호 설정