냐냐한 IT/냐냐한 실습 기록

Nginx 설치 (Naver Cloud, Ubuntu 16.04)

소소하냐 2023. 2. 8. 15:30

Spring Boot로 개발중인 사이트를 

Naver Cloud에 올리고, Spring Boot 내장 톰캣(:8080)으로 정상 동작하는 것을 확인했습니다. 

 

이제 추가할 작업은 http 연결이 80포트로 연결되게 하고, https로 보안 연결이 가능하도록 하는 것입니다. 

(이 포스팅에서는 https 보안 연결 작업에 대한 내용은 없습니다. 이후 포스팅에서 다룰 예정입니다.)

 

Nginx 설치 이유 

  • Certbot(Let's Encrypt 무료 ssl 인증서 관련) 설치 및 설정이 더 간편해 보이기 때문입니다. 
      (Nginx에 Certbot을 설치하는 것도 포스팅할 예정입니다.)
  • Nginx를 이용하여 무중단 배포를 설정할 계획입니다.

 

설치 환경

  • Naver Cloud: [MICRO] 1vCPU, 1GB Mem, 50GB Disk [g1]
    • ubuntu-16.04-64-server 

 

Nginx 설치 

설치

아래 설치 명령어로 설치합니다: 

sudo apt install nginx

 

설정 파일 작성

  • 설정 파일을 작성할 디렉토리로 이동합니다. 
cd /etc/nginx/sites-available/

 

  • 설정 파일을 생성 및 편집하도록 합니다. (nano 외에 다른 편집기로도 사용가능합니다.)
sudo nano 파일명

파일명은 원하는 이름(예: sudo nano site)으로 작성하시면 됩니다. 

 

  • 설정 파일의 내용은 아래와 같습니다: 

 

server {
        listen 80;
        server_name localhost;

        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;
        }
}
[주의] 이후 Certbot으로 인증서 발급 및 자동으로 설정을 이용하려고 한다면
- server_name 본인_도메인 (예: server_name example.com )으로 작성하는 것을 추천합니다. 
- Certbot으로 인증서 발급 및 자동으로 설정하려고 할 때, server_name을 못 찾는다는 오류와 함께 자동 설정이 안됩니다. (인증서 발급은 됩니다)

 

설정 파일에 대한 파일 링크 생성 

  • 파일 링크를 생성할 디렉토리로 이동
cd /etc/nginx/sites-enabled/
  • default 링크 삭제
# /etc/nginx/sites-enabled 디렉토리에서 
sudo rm default
  • 위에서 생성한 설정 파일에 대한 파일 링크 생성
# /etc/nginx/sites-enabled 디렉토리에서
sudo ln -s /etc/nginx/sites-available/파일명

파일명: 위에서 sudo nano로 생성한 설정 파일의 이름입니다. 

 

ls 명령을 수행하면 default는 사라지고 파일명 링크만 남은 것을 확인할 수 있습니다.

ls -al 명령어로 링크 확인

 

Nginx 실행

Nginx는 설치할 때 자동으로 실행되므로 앞에서 작성한 Nginx 설정을 적용하려면 Nginx를 다시 시작해야 합니다. 

sudo systemctl restart nginx

 

참고: Nginx 설정 파일에 오류가 있는지 확인하는 명령어

sudo nginx -t

 

동작 확인

브라우저에서 도메인 또는, IP로 접속하여 확인 (더 이상 :8080을 붙이지 않아도 됩니다.) 

 

간단하게 동작되는 내용을 설명하면:

브라우저에서 도메인 호출 >> Nginx (80 port) 호출 >> Spring Boot 내장 톰캣(8080 port) 호출 

 

Nginx 필수 실행 명령어

# Nginx 시작
sudo systemctl start nginx

# Nginx 중지
sudo systemctl stop nginx

# Nginx Restart (Nginx 서버 중지 후 다시 시작됩니다.)
sudo systemctl restart nginx 

# Nginx Reload (Nginx 서버 중지 없이, 설정 파일이 리로드 됩니다.)
sudo systemctl reload nginx

 

참고: 점프 투 스프링부트 > Nginx

 

끝까지 읽어주셔서 감사합니다.