전 세계에서 가장 널리 쓰이는 웹서버 중 하나인 엔진엑스(NginX)에 대해 소개해드립니다. 엔진엑스 특징, 구성, 웹서비스 흐름, 폴더 구조에 대해 알아보겠습니다.
Nginx
Nginx 소개
기존 Apache의 프로세스/스레드 기반 구조의 한계를 극복하기 위해 이벤트 기반으로 탄생되었습니다. 엔진엑스는 이벤트 기반 웹 서버 소프트웨어로 고성능 웹 서버, 리버스 프록시, 로드 밸런서, HTTP 캐시 역할을 동시에 수행할 수 있습니다. 아파치와 비교하면 동시 접속 처리 성능이 뛰어나고 낮은 메모리 사용량이 장점 되겠습니다.
Nginx 핵심 기능
1. 웹서버 - 정적 파일 (HTML, CSS, JS, 이미지)을 클라이언트에게 직접 제공합니다.
2. 리버스 프록시 - WAS(웹 애플리케이션 서버) 앞단에서 요청을 받아 애플리케이션 서버로 전달하고 응답을 받아오는 역할
3. 로드 밸런싱 - 여러 애플리케이션 서버로 요청을 분산시켜 부하를 줄이고 안정성을 높입니다.
4. 캐싱 - 자주 요청되는 콘텐츠를 캐싱하여 응답 속도롤 향상시킵니다.
5. SSL/TLS - 보안 연결을 제공합니다.
Nginx 주요 구성 요소
엔진엑스를 실행하면 기본적으로 두 종류의 프로세스가 뜹니다.
Master Process - 부모 역할을 하는 마스터 프로세스는 설정 파일 읽기, 워커 프로세스 생성, 관리, 재시작, 재로딩 등의 관리 작업을 담당
Worker Proces - 실제 클라이언트의 요청을 받고 처리
Nginx 웹 서비스 흐름
1. 클라이언트 요청 - 사용자의 브라우저를 통해 요청을 보냅니다.
2. Nginx 수신 - 서버 앞단에 위치한 Nginx가 이 요청을 수신합니다.
3. 리버스 프록시 전달 - Nginx는 설정 파일(nginx.conf)의 location 블록(proxy_pass) 설정에 따라 요청을 8080 포트 등에서 실행 중인 Spring Boot 내장 톰캣으로 전달합니다.
4. Spring Boot 처리 - 스프링 부트 애플리케이션이 비즈니스 로직을 처리하고 결과를 반환합니다.
5. 응답 반환 - 스프링 부트가 반환한 데이터를 Nginx가 받아 클라이언트에게 최종 응답합니다.
Nginx 폴더 구조
/etc/nginx/ (설정)
엔진엑스 서버가 사용하는 기본 설정이 저장된 루트 디렉터리입니다.
├── nginx.conf - 메인 설정 파일, 전역 설정 + 다른 설정 파일 include
├── mine.types - 확장자 MINE 타입 매핑
├── conf.d/ - 공통 설정 파일 디렉터리, 보통 전역 설정 또는 공용 서버 설정
├── sites-available/ - 가상 호스트 설정 보관소
├── sites-enabled/ - 실제 활성화된 가상 호스트
├── modules-available/ - 동적 모듈 관리
└── modules-enabled/ - 동적 모듈 관리
/var/www/ (콘텐츠)
└── html/
└── index.html - 정적 파일이 위치하며 root 또는 ailas로 연결
/var/log/nginx/ (로그)
엔진엑스의 로그가 저장되는 디렉터리
├── access.log - 접속 로그. 서버가 수신한 개별 요청에 대한 로그를 저장
└── error.log - 에러 로그로 오류 발생 시 이벤트 내용을 저장
| 관련포스트 |
| 웹 서버와 웹 애플리케이션 서버(WAS)의 차이 설명 |
| 프론트엔드와 백엔드(웹서버, 웹애플리케이션, 웹프레임워크) |
| 웹서버 | 아파치 (Apache) 에 대한 기초 지식 |
| 웹서버 | Apache |
'컴퓨터공학 > 웹 개발' 카테고리의 다른 글
| 웹서버 Nginx + Tomcat + Spring Boot 요청과 응답 흐름 (0) | 2026.02.26 |
|---|---|
| 네이버 엔클라우드(Ncloud) 소개 및 주요 서비스 설명 (2) | 2026.02.23 |
| 프론트엔드와 백엔드(웹서버, 웹애플리케이션, 웹프레임워크) (6) | 2025.06.16 |
| Let's Encrypt 에서 무료 SSL 인증서 발급 (4) | 2025.05.26 |
| 네이버 클라우드 플랫폼 (NCP) 서비스 소개 (3) | 2025.04.28 |
| 스프링부트 웹프레임워크 구조와 빌드 도구 (2) | 2025.03.27 |
| 웹 서버와 웹 애플리케이션 서버(WAS)의 차이 설명 (3) | 2025.03.06 |
| JAVA 프레임워크 | 스프링(SPRING) 프레임워크와 스프링 부트 소개 (6) | 2025.02.07 |
댓글