[Spring Boot] Nginx를 이용하여 Spring Boot를 80번 포트로 프록시하기

jjong_gang·2022년 3월 29일
4
post-thumbnail

시작

스프링 부트는 기본적으로 8080번 포트에서 서비스 됩니다.
하지만, 대부분의 서비스가 HTTP의 기본 포트인 80번 포트에서 제공되는 만큼, 결국은 80번 포트로 변경을 해줘야 합니다.

이를 위해서는 스프링 부트에서 루트 권한으로 80번 포트로 지정하여 사용할 수 있지만, 루트권한으로 실행시켜야 한다는 자체의 단점과, SSL을 적용하기 어렵다는 문제가 발생합니다. 이를 대체하기 위해 Nginx를 사용할 수 있습니다.

NginX란?

엔진엑스란, 동시접속 처리에 특화된 웹 서버 프로그램입니다. 비슷한 프로그램으로는 Apache가 있는데, Apache보다 동작이 단순하고, 단순하게 전달자의 역할만 하기 때문에 동시접속 처리에 있어 효율적입니다.

엔진엑스에는 여러 기능이 존재하지만, 그 중 저희가 이번 포스트에서 다룰 기능은 리버스 프록시 기능입니다.

Reverse Proxy

리버스 프록시란, 외부의 요청을 받아 백엔드 서버로 요청을 전달하는 것을 의미합니다.
리버스 프록시 서버(80번 포트)는 외부에서의 요청을 단순하게 전달(포워딩)하고 실제 요청에 대한 작업은 내부에 있는 애플리케이션 서버(8080번 포트)에서 처리하게 됩니다.

이러한 엔진엑스를 EC2서버에 올린 스프링 부트에 대해 적용시켜보겠습니다.

엔진엑스 적용

서버의 포트가 변경되기 때문에, 기존의 보안 규칙에 80번 포트가 없다면, 추가해주어야 합니다.

먼저 EC2에 접속하여 엔진엑스를 설치합니다.

sudo yum install nginx

혹시 설치할 수 있는 nginx가 존재하지 않는다는 알림이 뜬다면, 다음과 같은 명령어를 입력하여 설치가능한 nginx를 파악하고, 해당 nginx에 대해 설치를 진행해주시면 됩니다.

amazon-linux-extras list | grep nginx

아마존 리눅스를 사용하신다면 다음과 같이 입력하여 설치해주세요!

sudo amazon-linux-extras install -y nginx1

그 후 엔진엑스를 실행시킵니다.

sudo service nginx start

여기까지 완료되었다면, 스프링부트와의 연동을 하게 됩니다!
다음의 명령어로 엔진엑스 설정 파일로 들어가주세요.

sudo vim /etc/nginx/nginx.conf

여러분들의 설정 파일에는 아래와 같은
location / {
4줄...
}
부분이 없을 겁니다.
아래의 location 위치로 찾아가 다음의 6줄을 붙여넣기 해주세요!

    location / {
            proxy_pass http://localhost:8080;
            proxy_set_header X-Real_IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
    }

proxy_pass 부분은 nginx로 요청이 들어오면, 8080포트로 요청을 넘긴다는 의미로 생각하시면 됩니다!
그 이후의 항목들은 실제 요청 데이터를 header의 각 항목에 전달하는 것을 의미합니다.

모든 과정이 끝났으면, 아래의 명령어로 nginx를 재시작해주세요!

sudo service nginx restart

8080포트로 보내던 요청을 80번 포트로 바꿨을 때 정상적으로 요청이 응답된다면, 프록시 패스와 관련한 설정은 모두 끝났습니다!!

참고자료

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788965402602&orderClick=LAG&Kc=

https://whatisthenext.tistory.com/123

https://ko.wikipedia.org/wiki/Nginx

1개의 댓글

comment-user-thumbnail
2024년 3월 18일

지려따 감사합니다

답글 달기