Post

[Nginx 핵심 가이드] 설치부터 설정 파일 구조까지

[Nginx 핵심 가이드] 설치부터 설정 파일 구조까지

Nginx는 웹 서버를 구축하거나 정적·동적 콘텐츠를 배포할 때, 가장 널리 사용되는 웹 서버(Web Server) 중 하나입니다.

이번 포스팅에서는 처음 접하는 분들도 이해하기 쉽도록, Nginx의 개념부터 설치 및 실행 방법, 그리고 설정 파일의 구조주요 블록별 역할까지 단계별로 정리해보았습니다.

이 포스팅은 Ubuntu 24.04 LTS 기준으로 작성되었습니다.

1. Nginx 란?


Nginx는 가볍고 뛰어난 성능을 자랑하는 오픈소스 웹 서버 입니다.
이벤트 기반 비동기 아키텍처를 사용하여, 수많은 동시 접속을 효율적으로 처리할 수 있는 것이 가장 큰 강점입니다.

Nginx의 주요 용도는 다음과 같습니다.

  • 정적 콘텐츠 제공 (HTML, CSS, JS 등)
  • 리버스 프록시 (클라이언트와 서버 간의 중계)
  • 로드 밸런싱 (트래픽 분산)
  • HTTP 캐싱 (응답 속도 향상 및 트래픽 감소)

이처럼 Nginx는 다양한 용도, 뛰어난 성능과 낮은 리소스 사용량, 그리고 높은 안정성 덕분에 전 세계 수많은 웹사이트와 서비스에서 널리 활용되고 있습니다.

2. Nginx 설치 및 실행


먼저 Nginx 설치 및 실행부터 차근차근 진행해보도록 하겠습니다.
Nginx는 Ubuntu 공식 패키지 저장소를 통해 손쉽게 설치할 수 있습니다.

2-1. 패키지 목록 업데이트 및 설치

패키지 목록을 최신 상태로 업데이트한 뒤, Nginx를 설치합니다.

1
2
sudo apt update
sudo apt install nginx

Nginx 버전 확인 방법
터미널에 nginx -version 명령어를 입력하여 손쉽게 확인이 가능합니다.

2-2. 서비스 시작 및 부팅 시 자동 실행 설정

패키지 설치가 완료되면 Nginx 서비스를 시작하고, 서버가 재부팅될 때 자동으로 실행되도록 설정합니다.

1
2
sudo systemctl start nginx
sudo systemctl enable nginx

2-3. 서비스 상태 확인

아래 명령어를 통해 Nginx 서비스가 정상적으로 실행 중인지 확인합니다.

1
sudo systemctl status nginx

nginx_service_status
위와 같이 nginx.service의 상태가 enabled이고, Active 상태가 active (running)으로 표시되면 성공입니다.

welcome_to_nginx

이후 웹 브라우저에서 서버의 IP 주소 또는 도메인으로 접속했을 때, 위와 같은 Nginx 기본 페이지가 나타난다면 정상적으로 설치 및 실행된 것입니다.

3. Nginx 설정 구성과 구조 이해


Nginx는 /etc/nginx/ 디렉토리에 다양한 설정 파일 및 디렉토리를 보유하고 있습니다.
효율적인 웹 서버 운영을 위해, 각 설정 파일과 디렉토리의 역할을 이해하는 것이 중요합니다.

3-1. 주요 설정 파일 및 디렉토리 구조

경로(Path)설명
/etc/nginx/nginx.confNginx 전역 설정 파일로, 전체 서버 동작 방식을 정의합니다.
/etc/nginx/sites-available/개별 사이트(서버 블록)의 설정 파일을 저장하는 디렉토리 입니다.
도메인이나 서비스별로 설정 파일을 만들어 효율적으로 관리할 수 있습니다.
/etc/nginx/sites-enabled/실제로 활성화되어 적용되는 사이트(서버 블록) 설정의 심볼릭 링크가 위치하는
디렉토리 입니다. 일반적으로 sites-available에 있는 설정 파일을 연결하여
사용합니다.
/etc/nginx/conf.d/추가 설정 파일을 저장하는 디렉토리 입니다.
이곳에 .conf 확장자 파일을 두면, Nginx가 자동으로 불러와 설정을 적용합니다.
/var/www/웹 서버의 기본 루트 디렉토리입니다.
웹사이트의 실제 파일(HTML, CSS 등)이 이곳에 위치합니다.
/var/log/nginx/Nginx 로그 파일이 저장되는 디렉토리입니다.
access.logerror.log를 통해 접속 기록 및 오류 정보를 확인할 수 있습니다.

3-2. 설정 파일의 주요 블록 및 지시어

Nginx 설정 파일은 블록 단위의 계층 구조로 이루어져 있으며, 각 블록 안에는 서버 동작 방식을 정의하는 다양한 지시어(directive)들이 포함됩니다.

설정 파일은 일반적으로 다음과 같은 계층으로 나뉩니다.

1
2
3
4
5
main block
├── events block
└── http block
     ├── server block
     │    └── location block

3-2-1. main block

설정 파일 최상단에 위치하는 블록으로, Nginx 프로세스의 전반적인 동작을 제어하는 전역 설정 영역입니다.

다음은 main block의 주요 지시어 입니다.

지시어설명
include외부 설정 파일을 불러올 때 사용합니다.
이는 main block 뿐만 아니라, 다른 블록(http, server 등) 안에서도 사용할 수 있습니다.
userNginx 프로세스를 실행할 리눅스 사용자 및 그룹을 지정합니다.
일반적으로 www-data 사용자로 설정합니다.
worker_processes동시에 처리할 워커 프로세스 수를 지정합니다.
auto로 설정하면 CPU 코어 수에 맞춰 자동으로 할당됩니다.
error_log전역 오류 로그 파일의 경로와 로그 레벨을 지정합니다.
로그 레벨은 debug, info, notice, warn, error, crit 등 다양한 수준이 있습니다.
pid마스터 프로세스의 PID를 저장할 파일 경로를 지정합니다.

3-2-2. events block

Nginx의 이벤트 기반 네트워크 처리 방식과 연결 수 제한 등을 설정하는 블록입니다.

다음은 events block의 주요 지시어 입니다.

지시어설명
worker_connections각 워커 프로세스가 동시에 처리할 수 있는 최대 연결 수를 지정합니다.
multi_accept워커 프로세스가 새로운 연결을 수신할 때, 한 번에 여러 연결을 동시에 수락할지 여부
설정합니다.

3-2-3. http block

Nginx에서 실제 HTTP 요청을 처리하는 핵심 블록입니다.

다음은 http block의 주요 지시어 입니다.

지시어설명
default_type웹 서버의 기본 MIME 타입(Content-Type)을 정의합니다.
파일 확장자를 알 수 없을 때 적용되며, 일반적으로 application/octet-stream으로 설정합니다.
sendfile정적 파일 전송 시 sendfile() 시스템 콜(System Call)을 사용할지 여부를 설정합니다.
커널 공간에서 바로 네트워크로 파일을 전송하여, 파일 처리 성능을 향상시키는데 도움을 줍니다.
일반적으로 on으로 설정합니다.
gzip응답 데이터를 gzip으로 압축할지 여부를 설정합니다.
압축된 데이터는 네트워크 트래픽을 줄이고, 페이지 로딩 속도를 향상시키는 데 도움이 됩니다.
access_log접속 로그를 저장할 파일 경로와 형식을 지정합니다.

3-2-4. server block

Nginx에서 하나의 도메인 또는 포트에 대한 서버 설정을 정의하는 블록으로, http block 안에 위치합니다.
가상 호스트의 개념으로, 여러 도메인을 하나의 Nginx 인스턴스에서 독립적으로 처리할 수 있도록 합니다.

다음은 server block의 주요 지시어 입니다.

지시어설명
server_name서버 블록이 처리할 도메인 이름을 지정합니다.
listen서버가 바인딩할 포트와 IP 주소를 설정합니다.
root요청에 응답할 정적 파일의 루트 디렉터리 경로를 지정합니다.
index디렉터리 요청 시 기본으로 제공할 파일명을 지정합니다.

3-2-5. location block

클라이언트의 요청 URL 경로에 따라 처리 방식을 분기하는 블록으로, server block 안에 위치합니다.
요청 경로에 따라 정적 파일 제공, 리버스 프록시, 리다이렉트, 접근 제한 등 다양한 처리가 가능합니다.

다음은 location block의 주요 지시어 및 패턴 입니다.

지시어설명
try_files요청한 파일이 존재할 경우 제공하고, 없으면 대체 경로 또는 오류를 반환합니다.
proxy_pass요청을 다른 서버로 전달할 때 사용합니다. 주로 리버스 프록시 설정에 사용됩니다.
패턴(Pattern)설명
location /루트 경로에 대한 요청을 처리합니다. 모든 요청의 기본 진입점이 됩니다.
location /path/특정 경로로 시작하는 모든 요청을 처리합니다.
본 예시의 경우, /path/로 시작하는 모든 요청에 대해 적용됩니다.
location = /about정확히 해당 경로와 일치하는 요청을 처리합니다.
본 예시의 경우, /about과 정확히 일치하는 요청에만 적용됩니다.
location ~ \.js$정규표현식을 사용하는 패턴 매칭입니다.
본 예시의 경우, .js로 끝나는 모든 요청에 적용됩니다.

마무리


지금까지 Nginx의 개념부터 설치 및 실행 방법, 그리고 설정 파일의 구조와 블록별 주요 역할까지 살펴보았습니다.
Nginx는 처음에는 다소 생소하게 느껴질 수 있지만, 구조만 제대로 이해하면 매우 유연하고 강력한 웹 서버를 구성하는데 도움이됩니다.

궁금한 점이나 오류가 있다면 댓글로 남겨주세요!

감사합니다.

This post is licensed under CC BY 4.0 by the author.