인프런 커뮤니티 질문&답변

lwisekiml님의 프로필 이미지

작성한 질문수

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

47강. 가비아를 이용한 도메인 구입, DNS 적용

도메인 주소 사용 질문

해결된 질문

23.05.04 17:35 작성

·

968

2

가비아에서 도메인 구입해서 사이트 접속을 할 때

http://www.studying-developer.shop:8080/v1/index.html

이런식으로 포트와 그 이하 경로도 써서 접속을 하셨는데, 보통 사이트 접속할때 포트를 입력하지 않고

https://www.inflearn.com/

과 같이 접속을 하는데

이런식으로 접속할 수 있게 바꿀 수는 없을까요?

답변 1

2

최태현님의 프로필 이미지
최태현
지식공유자

2023. 05. 07. 12:34

안녕하세요, Iwisekiml님!! 크으~~ 정말 좋은 질문이십니다!!! 😊😊

 

말씀해주신것처럼 저희는 프로젝트에서 8080 포트로 접근하도록 했는데요, 그 이유는 스프링 부트가 8080 포트에서 동작하고 있기 때문이었죠!

하지만 대부분의 서비스는 포트번호를 별달리 입력하지 않고 서비스에 접속하게 됩니다! 그 이유는 프로토콜별로 '기본 포트번호'가 있기 때문이에요!

예를 들어, http 는 80 번호가 기본 포트번호이기 때문에, http://abc.com 이라고 입력하면, abc.com 의 컴퓨터를 찾아 80번 프로그램과 연결되고요!! https 는 443 번호가 기본 포트번호이기 때문에 https://abc.com 이라고 입력하면 abc.com 의 컴퓨터를 찾아 443번 프로그램과 연결되죠!!

 

자 그렇다면 저희가 만들었던 스프링 부트를 8080 으로 그냥 띄워두고 포트 번호를 생략하면 어떻게 될까요?!!

 

http 로 연결한다고 가정해보면 당연 80 번과 8080 번은 다르기 때문에 연결이 되지 않습니다!

즉, 우리는 80번 (또는 443번)과 8080번을 이어주어야 한다는 뜻이겠죠 ㅎㅎㅎ 물론, 스프링 부트의 포트 번호를 변경시켜서 8080 대신 80 또는 443을 쓰게 만들 수도 있습니다. (https://honeywater97.tistory.com/257)

 

하지만, 보안상 취약할 수 있기 때문에 일반적으로 권장되는 방식은 아니고요!! 특정 포트 번호와 8080을 이어주는 방식이 권장됩니다.

자 그러면 어떤 방법으로 80 (또는 443) 번호와 8080을 이어줄 수 있는지 설명드려보겠습니다!! 🙂

 

[1. 포트 포워딩]

가장 대표적으로는 리눅스의 포트 포워딩을 사용할 수 있습니다.

관련 포스트 : https://m.blog.naver.com/on21life/221182596171

추가 프로그램 설치 없이 리눅스 명령어만으로 간편히 두 개의 포트를 연결할 수 있다는 장점이 있지만, 추가 프로그램 설치가 없기 때문에 추가적인 기능들 (로그 찍기, 요청을 분산해서 부하 줄이기, 모니터링하기, 보안 관련 설정하기 등등) 이 없기 때문에 가장 덜 사용되는 방식이기도 합니다.

 

[2. nginx의 포트 포워딩]

관련 포스트 : https://zionh.tistory.com/20

nginx 이라는 프로그램을 사용하여 두 개의 포트를 연결하는 방식입니다! 많이 사용되는 방식 중 하나이며, nginx의 추가적인 기능들 (로그 찍기, 보안 관련 설정하기, HTTP 옵션 설정하기 등) 을 쓸 수 있어 좋습니다.

 

[3. AWS의 Application Load Balacner]

관련 포스트 : https://jforj.tistory.com/278

클라우드 (AWS) 환경에 서비스가 구성되어 있다면 "Load Balancer"를 활용할 수도 있습니다.

Load Balancer란 큰 빌딩의 "Information 센터"라고 생각하시면 됩니다! 요청이 들어오면 우리 Information 센터 친구가 가장 먼저 요청을 확인하고 어떤 층의 어떤 부서로 가라고 안내해주죠~ Load Balancer도 비슷합니다. 요청이 들어오면 어떤 서버로 그 요청이 들어가면 될지 연결시켜 주는데요!!

 

이때, 80 또는 443 포트의 요청을 받아서 우리 내부 서버의 8080 포트로 연결해주는 방식을 쓸 수 있습니다. 1번, 2번과의 차이점이라면 아예 새로운 장비가 필요하다는 점인데요! 아무래도 클라우드 (AWS) 환경에서는 이런 장치를 클릭 몇 번으로 설정할 수 있다 보니 매우 자주 사용됩니다...!!

 

 

[추가적으로...]

추가적으로 HTTPS (HTTP + Secure) 은 '보안(Secure)' 프로토콜 이기 때문에 이 프로토콜을 사용해 통신하려면 인증서를 발급받아야 합니다.

https://namjackson.tistory.com/24 와 같은 방식으로 직접 인증서를 발급 받기도 하고,

AWS의 특정 기능 (관련 포스트 : https://kingofbackend.tistory.com/197) 을 사용하는 방식으로 인증서를 발급 받기도 합니다 ㅎㅎㅎ 아무래도 요즘은 클라우드 환경을 많이 사용하다보니 후자의 방법을 쓰게 됩니다.

 

 

즉, 정리를 한 번 드려보자면,

  • https://abc.com 으로 접속하기 위해서는 1) 들어오는 443과 내부의 8080을 이어주어야 하고 2) HTTPS 통신을 위해 인증서를 발급 받아야 한다.

  • AWS를 많이 사용하는 요즘은 AWS ALB와 AWS 인증서 발급을 활용해 해당 목표를 달성할 수 있다.

입니다!!

답변이 도움이 되었으면 좋겠습니다! 감사합니다!! (언제든 또 궁금한 점 있으시면 편하게 질문 주세요!!) 🙇🙇🙇