CI & CD

[Nginx] 24시간 365일 중단 없는 서비스 만들기 2 - 엔진엑스 설치와 스프링 부트 연동하기

박성민 2021. 7. 19. 23:36

가장 먼저 EC2에 엔진엑스를 설치하겠습니다.

엔진엑스 설치

EC2에 접속해서 다음 명령어로 설치할 nginx를 찾습니다.

amazon-linux-extras list | grep nginx

nginx를 설치합니다.

sudo amazon-linux-extras install -y nginx1

설치가 완료되었으면 다음 명령어로 엔진엑스를 실행합니다.

sudo service nginx start

엔진엑스가 잘 실행되었다면 다음과 같은 메시지를 볼 수 있습니다.

Redirecting to /bin/systemctl start nginx.service

보안 그룹 추가

먼저 엔진엑스의 포트번호를 보안 그룹에 추가하겠습니다.
엔진엑스의 포트번호는 기본적으로 80입니다.
해당 포트 번호가 보안 그룹에 없으니 [EC2 => 보안 그룹 => EC2 보안 그룹 선택 => Edit inbound rules]로 차례로 이동해서 변경합니다.
1

리다이렉션 주소 추가

8080이 아닌 80포트로 주소가 변경되니 구글과 네이버 로그인에도 변경된 주소를 등록해야만 합니다.
기존에 등록된 리디렉션 주소에서 8080 부분을 제거하여 추가 등록합니다.
앞의 글들을 참고하여 구글과 네이버에 차례로 등록합니다.
2

3

추가한 후에는 EC2의 도메인으로 접근하되, 8080 포트를 제거하고 접근해 봅니다.
즉, 포트번호 없이 도메인만 입력해서 브라우저에서 접속합니다.

그럼 다음과 같이 엔진엑스 웹페이지를 볼 수 있습니다.
4

엔진엑스와 스프링 부트 연동

엔진엑스가 현재 실행 중인 스프링 부트 프로젝트를 바라볼 수 있도록 프록시 설정을 하겠습니다.
엔진엑스 설정 파일을 열어봅니다.

sudo vim /etc/nginx/nginx.conf

설정 내용 중 server 아래의 location / 부분을 찾아서 다음과 같이 추가합니다.
5

proxy_pass http://localhost:8080; # 1
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 2
proxy_set_header Host $http_host;
  1. proxy_pass
    • 엔진엑스로 요청이 오면 http://localhost:8080으로 전달합니다.
  2. proxy_set_header XXX
    • 실제 요청 데이터를 header의 각 항목에 할당합니다.
    • 예) proxy_set_header X-Real-IP $remote_addr: Request Header의 X-Real-IP에 요청자의 IP를 저장합니다.

수정이 끝났으면 :wq 명령어로 저장하고 종료해서, 엔진엑스를 재시작하겠습니다.

sudo service nginx restart

다시 브라우저로 접속해서 엔진엑스 시작 페이지가 보이면 화면을 새로고침합니다.
6

엔진엑스가 스프링 부트 프로젝트를 프록시하는 것이 확인됩니다.

참고