Nginx
Nginx
웹서버를 구성하다보면 nginx라는 말을 심심찮게 들을 때가 있다.
가끔 웹사이트들의 서버가 터지면 nginx 404 Not Found를 보게 되는 경우가 종종 있는데
Nginx가 뭔지 알아보자
Nginx의 정의
Nginx는 이벤트 기반 비동기 아키텍처를 사용하는 웹 서버 및 리버스 프록시 서버이다.
정적 파일 서비스, 로드 밸런싱, 리버스 프록시, SSL 처리, 캐싱 등을 효율적으로 수행한다.
Nginx의 3대 주요 역할
- 정적 파일 응답
- /api → 백엔드 프록시
- HTTPS 등 보안 처리
nginx는 프록시(Proxy) 서버이다.
Proxy (프록시)는 한국어로 대리인, 대리 서버, 혹은 중계 서버 정도로 번역되는데
클라이언트와 서버 사이를 중계한다는 뜻이다.
프록시에는 정방향 프록시와 리버스 프록시 2가지가 있다.
Proxy | 대리자 | 대신 요청/응답을 처리하는 중간 서버 |
---|---|---|
Forward Proxy | 정방향 대리 서버 | 클라이언트를 대신해서 요청 |
Reverse Proxy | 역방향 대리 서버 | 서버를 대신해서 응답 (Nginx) |
위와 같이 클라이언트의 앞에서 클라이언트를 위한 기능을 수행하는 프록시 서버를 포워드 프록시라고 하고
이처럼 서버 앞에서 클라이언트들의 요청을 대신 받아 서버를 위한 여러 기능을 수행하는 것을 리버스 프록시라고 한다.
항목 | 정방향 프록시 (Forward Proxy) | 리버스 프록시 (Reverse Proxy) |
---|---|---|
위치 | 클라이언트 앞단 (클라이언트 → 프록시 → 서버) | 서버 앞단 (클라이언트 → 프록시 → 서버) |
주 사용 주체 | 클라이언트 측 (사용자/조직) | 서버 운영자 측 (서비스 제공자) |
목적 | 클라이언트의 익명성 보호, 접근 제어, 콘텐츠 필터링 | 서버 보호, 로드밸런싱, SSL 처리, 캐싱 |
클라이언트가 보는 대상 | 목적지 서버 | 프록시 서버 |
예시 | 회사에서 유해 사이트 차단, VPN | Nginx, Apache HTTPd, AWS ALB 등 |
Nginx는 이중에서 서버 앞단에 위치해 클라이언트의 요청을 중계하고, 정적 파일을 빠르게 서빙하거나 백엔드 서버로 요청을 전달하는 등의 역할을 수행하는 리버스 프록시다.
프록시 서버 설정의 효과들
효과 | 설명 |
---|---|
익명성 보호 | 실제 백엔드 서버 IP나 구조를 외부에 노출하지 않음 |
로드 밸런싱 | 여러 서버에 요청을 분산시켜 부하를 줄임 |
서비스 분리 및 확장 | API, 웹서버, 파일 서버 등을 나누고 통합적으로 관리 |
CORS 문제 해결 | 클라이언트에서 백엔드 요청할 때, 같은 출처로 보이게 해줌 |
SSL 인증서 관리 | FastAPI 같은 백엔드 서버는 HTTP만 쓰고, HTTPS는 Nginx에서 처리 |
이런식으로 클라이언트와 서버 사이에서 다양한 역할을 수행할 수 있다.
Nginx에서 HTTPS를 처리하는 이유
- SSL/TLS 핸드쉐이크 부담을 줄이기 위해
- HTTPS는 초기 연결 시 암호화 설정(핸드쉐이크) 등 무거운 작업 필요
- 이걸 백엔드 서버 (예: FastAPI, Node.js 등)에게 맡기면 백엔드 서버의 부담 증가
- Nginx는 C 기반 고성능 서버라 이런 낮은 레벨의 작업을 효율적으로 처리할 수 있다.
- 모든 요청을 하나의 진입점에서 통제
- Nginx에서 HTTPS 처리 → 이후는 내부에서 HTTP 통신
- 이렇게 하면 백엔드 서버는 HTTP만 처리해도 되고, SSL 인증서나 암호화는 Nginx만 신경 쓰면 된다.
- 인증서 설치/갱신 편의성
- Let’s Encrypt 같은 무료 SSL 인증서를 Nginx와 쉽게 연동 가능 (ex: certbot)
- 인증서 경로를 일일이 앱 서버마다 설정할 필요 없음
Nginx는 리버스 프록시 서버이면서,
동시에 정적 파일(=프론트엔드 빌드 결과물)을 서빙하는 웹 서버 역할도 함께 수행할 수 있다.
그냥 리버스 프록시 역할만 수행하는 API 게이트웨이처럼 쓰기도 한다.
This post is licensed under CC BY 4.0 by the author.