Post

Nginx

Nginx

웹서버를 구성하다보면 nginx라는 말을 심심찮게 들을 때가 있다.

가끔 웹사이트들의 서버가 터지면 nginx 404 Not Found를 보게 되는 경우가 종종 있는데

404

Nginx가 뭔지 알아보자

Nginx의 정의

Nginx는 이벤트 기반 비동기 아키텍처를 사용하는 웹 서버 및 리버스 프록시 서버이다.

정적 파일 서비스, 로드 밸런싱, 리버스 프록시, SSL 처리, 캐싱 등을 효율적으로 수행한다.

Nginx의 3대 주요 역할

  1. 정적 파일 응답
  2. /api → 백엔드 프록시
  3. HTTPS 등 보안 처리

nginx는 프록시(Proxy) 서버이다.

Proxy (프록시)는 한국어로 대리인, 대리 서버, 혹은 중계 서버 정도로 번역되는데

클라이언트와 서버 사이를 중계한다는 뜻이다.

프록시에는 정방향 프록시와 리버스 프록시 2가지가 있다.

Proxy대리자대신 요청/응답을 처리하는 중간 서버
Forward Proxy정방향 대리 서버클라이언트를 대신해서 요청
Reverse Proxy역방향 대리 서버서버를 대신해서 응답 (Nginx)

forward_proxy

위와 같이 클라이언트의 앞에서 클라이언트를 위한 기능을 수행하는 프록시 서버를 포워드 프록시라고 하고

reverse_proxy

이처럼 서버 앞에서 클라이언트들의 요청을 대신 받아 서버를 위한 여러 기능을 수행하는 것을 리버스 프록시라고 한다.

항목정방향 프록시 (Forward Proxy)리버스 프록시 (Reverse Proxy)
위치클라이언트 앞단 (클라이언트 → 프록시 → 서버)서버 앞단 (클라이언트 → 프록시 → 서버)
주 사용 주체클라이언트 측 (사용자/조직)서버 운영자 측 (서비스 제공자)
목적클라이언트의 익명성 보호, 접근 제어, 콘텐츠 필터링서버 보호, 로드밸런싱, SSL 처리, 캐싱
클라이언트가 보는 대상목적지 서버프록시 서버
예시회사에서 유해 사이트 차단, VPNNginx, Apache HTTPd, AWS ALB 등

Nginx는 이중에서 서버 앞단에 위치해 클라이언트의 요청을 중계하고, 정적 파일을 빠르게 서빙하거나 백엔드 서버로 요청을 전달하는 등의 역할을 수행하는 리버스 프록시다.


프록시 서버 설정의 효과들

효과설명
익명성 보호실제 백엔드 서버 IP나 구조를 외부에 노출하지 않음
로드 밸런싱여러 서버에 요청을 분산시켜 부하를 줄임
서비스 분리 및 확장API, 웹서버, 파일 서버 등을 나누고 통합적으로 관리
CORS 문제 해결클라이언트에서 백엔드 요청할 때, 같은 출처로 보이게 해줌
SSL 인증서 관리FastAPI 같은 백엔드 서버는 HTTP만 쓰고, HTTPS는 Nginx에서 처리

이런식으로 클라이언트와 서버 사이에서 다양한 역할을 수행할 수 있다.


Nginx에서 HTTPS를 처리하는 이유

  1. SSL/TLS 핸드쉐이크 부담을 줄이기 위해
  • HTTPS는 초기 연결 시 암호화 설정(핸드쉐이크) 등 무거운 작업 필요
  • 이걸 백엔드 서버 (예: FastAPI, Node.js 등)에게 맡기면 백엔드 서버의 부담 증가
  • Nginx는 C 기반 고성능 서버라 이런 낮은 레벨의 작업을 효율적으로 처리할 수 있다.
  1. 모든 요청을 하나의 진입점에서 통제
  • Nginx에서 HTTPS 처리 → 이후는 내부에서 HTTP 통신
  • 이렇게 하면 백엔드 서버는 HTTP만 처리해도 되고, SSL 인증서나 암호화는 Nginx만 신경 쓰면 된다.
  1. 인증서 설치/갱신 편의성
  • Let’s Encrypt 같은 무료 SSL 인증서를 Nginx와 쉽게 연동 가능 (ex: certbot)
  • 인증서 경로를 일일이 앱 서버마다 설정할 필요 없음


Nginx는 리버스 프록시 서버이면서,
동시에 정적 파일(=프론트엔드 빌드 결과물)을 서빙하는 웹 서버 역할도 함께 수행할 수 있다.

그냥 리버스 프록시 역할만 수행하는 API 게이트웨이처럼 쓰기도 한다.


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