정지용
기술스택 목록
인프라

nginx

프로젝트 2에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

정적 파일 서빙, 리버스 프록시, 로드밸런싱을 담당하는 고성능 웹 서버

Nginx는 이벤트 기반 비동기 아키텍처로 설계된 웹 서버 겸 리버스 프록시 소프트웨어입니다. 다수의 동시 연결을 프로세스나 스레드를 많이 만들지 않고도 적은 자원으로 처리하기 위해 만들어졌으며, 이를 통해 아파치와 같은 기존 웹 서버가 겪던 C10K 문제(대량 동시 접속 처리의 한계)를 해결하고자 했습니다. 정적 파일 서빙뿐 아니라 백엔드 애플리케이션 서버 앞단에서 요청을 분산·중계하는 리버스 프록시, 로드밸런서, API 게이트웨이 역할로도 널리 쓰입니다.

이럴 때 사용합니다

  • 빌드된 정적 파일(HTML/JS/CSS)을 빠르고 가볍게 서빙해야 할 때
  • 여러 백엔드 서버 앞단에서 요청을 분산하는 로드밸런서가 필요할 때
  • API 서버나 애플리케이션 서버 앞에 리버스 프록시와 캐싱 계층을 두고 싶을 때
  • TLS 종료, 압축, 캐시·보안 헤더 설정을 애플리케이션 코드 밖에서 일괄 관리하고 싶을 때

핵심 개념

reverse proxy
클라이언트 요청을 받아 내부 백엔드 서버로 전달하고 응답을 다시 클라이언트에 돌려주는 중계 방식으로, 백엔드를 외부에 직접 노출하지 않아도 됩니다.
server block
하나의 Nginx 인스턴스 안에서 도메인이나 포트별로 서로 다른 응답 규칙을 정의하는 설정 단위로, 아파치의 가상 호스트와 비슷한 개념입니다.
location block
요청 URL 경로 패턴에 따라 서로 다른 처리 방식(정적 파일 반환, 프록시 전달, 리다이렉트 등)을 지정하는 설정 블록입니다.
worker process
이벤트 루프 기반으로 다수의 연결을 논블로킹 방식으로 처리하는 Nginx의 실행 단위로, 적은 수의 프로세스로도 많은 동시 요청을 소화합니다.
SPA fallback
파일 시스템에 없는 경로 요청을 모두 index.html 등 하나의 진입 파일로 돌려보내, 클라이언트 사이드 라우팅을 쓰는 싱글 페이지 애플리케이션이 정상 동작하게 하는 설정 방식입니다.

SPA 정적 파일 서빙 설정

정적 빌드 파일을 서빙하면서 존재하지 않는 경로는 index.html로 돌려 SPA 라우팅을 지원하고, /api/ 요청은 백엔드 서버로 프록시합니다.

예시
server {
    listen 80;
    root /usr/share/nginx/html;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /api/ {
        proxy_pass http://backend:8080/;
    }
}

처음 쓸 때 흔한 함정

  • SPA fallback(try_files) 설정을 빠뜨리면 새로고침 시 404가 발생한다
  • 설정 변경 후 reload를 하지 않으면 새 설정이 적용되지 않는다
  • location 블록의 매칭 우선순위와 정규식 규칙을 착각하기 쉽다

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.