EC2 서버를 성공적으로 배포하고 서버에 접근하려 했는데,
위와 같이 서버에 연결을 거절 당했다! 라는 페이지가 나를 반겼다.
이게 무슨일이지? 하며 팀원이 던진 한 마디
"포트 번호 붙여야 하는 것 아니에요?"
라는 말이 시도를 해보니...
성공!!!
포트 번호가 생략된 것이 문제였다.
EC2 그리고 Tomcat
EC2 서버는 기본적으로 http 프로토콜을 가지며, 포트 번호 80
을 가지고 있다.
그리고 Spring boot 는 내부적으로 Tomcat 서버를 관리하는데 포트 번호 8080
을 가지고 있다.
헷갈리지만...
일단 나는 Crome 브라우저를 통해 EC2 에서 생성된 퍼블릭 IP 주소를 통해 서버에 접근하고자 했다.
처음 url 을 입력했을 때, 포트 번호 없이 퍼블릭 IP 주소만 입력했다.
:80
포트가 붙어준다고 한다.나는 EC2 서버를 통해 Spring boot 애플리케이션에 접근을 해야하는데, 이때는 :8080
포트를 붙여줘야 한다고 한다.
도메인
+:8080
이후에 도메인을 연결한 뒤를 생각해보자.
뒤에 매번 도메인:8080
의 형태로 접근해야한다면,
따라서 위의 문제를 해결하기 위해서 포트포워딩 을 통해 포트 번호를 생략하기로 했다!
80 포트를 8080 포트로 포워딩
포트 번호를 입력하지 않으려면 http 기본 포트인 80
번 포트로 요청해야 한다.
따라서 기본 포트 번호인 80
으로 요청을 보냈을 때, 배포한 서버에서 설정된 기본포트 8080
으로 포워딩 되도록 설정하면 된다!
내 서버로 들어오는 요청에서 80 포트로 들어온 요청은 8080 으로 해석해줘.
방법은 간단하다!!!
EC2 에서 배포한 서버에 접속한다.
ex) ubuntu
관리자 권한으로 접속한다.
sudo su
# 서버에 관리자 권한으로 접속
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
# 입력하여 80번 포트로 접속하면 8080으로 리다이렉트 되도록 포트 리다이렉트 설정
주의!!!
EC2 에서 인바운드 설정해주어야 한다!!!!!
OMG,,,, 같은 삽질을 하셨군요 덕분에 3시간만에 해결했습니다... 감삼다 ㅜ ㅜ