EC2 포트 번호 생략 관련 이슈

김형준 Kim Hyeong Jun·2023년 1월 5일
0

EC2 서버를 성공적으로 배포하고 서버에 접근하려 했는데,
위와 같이 서버에 연결을 거절 당했다! 라는 페이지가 나를 반겼다.

이게 무슨일이지? 하며 팀원이 던진 한 마디
"포트 번호 붙여야 하는 것 아니에요?"
라는 말이 시도를 해보니...

성공!!!
포트 번호가 생략된 것이 문제였다.

EC2 그리고 Tomcat

EC2 서버는 기본적으로 http 프로토콜을 가지며, 포트 번호 80 을 가지고 있다.
그리고 Spring boot 는 내부적으로 Tomcat 서버를 관리하는데 포트 번호 8080 을 가지고 있다.

헷갈리지만...

일단 나는 Crome 브라우저를 통해 EC2 에서 생성된 퍼블릭 IP 주소를 통해 서버에 접근하고자 했다.

처음 url 을 입력했을 때, 포트 번호 없이 퍼블릭 IP 주소만 입력했다.

  • 알고보니 이렇게 되면 자동으로 :80 포트가 붙어준다고 한다.

나는 EC2 서버를 통해 Spring boot 애플리케이션에 접근을 해야하는데, 이때는 :8080 포트를 붙여줘야 한다고 한다.

도메인 + :8080

이후에 도메인을 연결한 뒤를 생각해보자.
뒤에 매번 도메인:8080 의 형태로 접근해야한다면,

  1. 포트 번호를 쳐주는 것이 번거로울 수 있다.
  2. Url 이 깔끔해 보이지 않을 것이다.

따라서 위의 문제를 해결하기 위해서 포트포워딩 을 통해 포트 번호를 생략하기로 했다!

80 포트를 8080 포트로 포워딩

포트 번호를 입력하지 않으려면 http 기본 포트인 80번 포트로 요청해야 한다.

따라서 기본 포트 번호인 80 으로 요청을 보냈을 때, 배포한 서버에서 설정된 기본포트 8080 으로 포워딩 되도록 설정하면 된다!

내 서버로 들어오는 요청에서 80 포트로 들어온 요청은 8080 으로 해석해줘.

방법은 간단하다!!!

  1. EC2 에서 배포한 서버에 접속한다.
    ex) ubuntu

  2. 관리자 권한으로 접속한다.

sudo su
  
# 서버에 관리자 권한으로 접속
  1. 포트 리다이렉트 설정
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

# 입력하여 80번 포트로 접속하면 8080으로 리다이렉트 되도록 포트 리다이렉트 설정

주의!!!

EC2 에서 인바운드 설정해주어야 한다!!!!!

profile
I want be a developer🙂

1개의 댓글

comment-user-thumbnail
2024년 8월 1일

OMG,,,, 같은 삽질을 하셨군요 덕분에 3시간만에 해결했습니다... 감삼다 ㅜ ㅜ

답글 달기