본문 바로가기

DATA SCIENCE/Review

[Monthly Reading]nginx cookbook

들어가며

최근 회사 프로젝트 목적으로 엔진엑스를 접하게 되었고, 이에 대한 지식이 전무했던지라 담당자와의 의사소통이 어려웠다. 정확히는 서비스 퀄리티를 높이기 위한 기능 요청을 하는 과정에서 아무래도 아는 것이 없으니 항상 기본 답변으로 오는 '안돼요~', '불가능해요~'에 너무나 간단히 막혀버렸다.

 

이 때문에 엔진엑스에 대한 기본사항이라도 배우고자 이 책을 시작했으나...솔직히 말해 너무 어려웠다. 일단 이 책이 입문자용 기본도서가 아니었고, 그렇다보니 간단한 명령어조차 제대로 알지 못하는 입장에선 활용성이 떨어졌다(플랫폼 팀에게 전달해주면 좋아할 것 같기도 하다).

 

때문에 이 책은 나같은 가볍게 접하고, 기본적인 개념과 명령어를 배우고자 하는 입문자들에겐 적합하지 않다는 것을 먼저 말해야 할 것 같다. 그리고 나같은 사람이 이 책을 읽기 위해 간단히 작성한 엔진엑스 입문자를 위한 내용인 아래 내용을 읽고 시도해본 뒤 진행해본다면 도움이 될 것 같다.

 

다음은 엔진엑스에 대한 기본적인 소개부터 서비스를 돌리는 명령어 등이다.

 


소개

엔진엑스는 오픈소스 웹 서버 소프트웨어로, 높은 성능, 안정성, 확장성을 제공합니다. 이번 포스트에서는 엔진엑스 기초를 학습해보겠습니다.

 

데비안/우분투 리눅스 배포판에 설치하기

엔진엑스는 데비안/우분투 리눅스 배포판에 쉽게 설치할 수 있습니다. 아래 명령어를 터미널에서 실행하여 엔진엑스를 설치할 수 있습니다.

sudo apt-get update
sudo apt-get install nginx

 

정적 콘텐츠 서비스하기

엔진엑스는 정적 콘텐츠를 서비스하는 데에 최적화되어 있습니다. 정적 콘텐츠를 서비스하려면 엔진엑스가 액세스할 수 있는 디렉토리에 파일을 넣어두면 됩니다. 기본적으로 엔진엑스는 /usr/share/nginx/html 디렉토리를 사용합니다.

 

클라우드 환경 배포

엔진엑스는 클라우드 환경에서 자동 프로비저닝 구현이 가능합니다. AWS, 애저, 구글 컴퓨트 엔진 등 다양한 클라우드 서비스에서 엔진엑스를 배포할 수 있습니다. AWS에서는 AWS ELB를 쓰지 않고 엔진엑스 노드로 라우팅하는 방법이 있습니다.

 

엔진엑스 설정 파일

엔진엑스는 설정 파일을 통해 다양한 기능을 제공합니다. 설정 파일은 기본적으로 /etc/nginx/nginx.conf 경로에 위치합니다. 설정 파일을 수정하고 적용하려면 아래 명령어를 실행합니다.

sudo nginx -t
sudo service nginx reload

 

리버스 프록시 설정하기

엔진엑스는 리버스 프록시로 사용하기에도 좋습니다. 리버스 프록시란 클라이언트와 서버 사이에서 중개자 역할을 하는 서버를 말합니다. 엔진엑스를 사용한 리버스 프록시 설정 방법은 다음과 같습니다.

  1. /etc/nginx/sites-available/default 파일을 열고, server 블록 안에 다음과 같이 위치를 추가합니다.
location / {
    proxy_pass <http://localhost:3000>;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

  2. 위와 같이 설정 후, 아래 명령어를 실행합니다.

sudo service nginx restart

 

SSL 인증서 적용하기

SSL 인증서를 적용하면 HTTPS 프로토콜을 사용할 수 있습니다. SSL 인증서를 적용하는 방법은 다음과 같습니다.

  1. SSL 인증서를 발급받습니다. Let's Encrypt를 사용하면 무료로 SSL 인증서를 발급받을 수 있습니다.
  2. /etc/nginx/sites-available/default 파일을 열고, server 블록에 다음과 같이 SSL 인증서 경로를 추가합니다.
server {
    ...
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}

   3. 위와 같이 설정 후, 아래 명령어를 실행합니다.

sudo service nginx restart

 


참고 자료

 

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."