Nginx란?

김덕진·2025년 6월 7일

Infra

목록 보기
3/3

Nginx(엔진엑스)는 가볍고 빠른 웹 서버로, 다음과 같은 역할을 수행할 수 있습니다:

  • 정적 파일 서빙: HTML, CSS, JS, 이미지 등 정적 리소스를 빠르게 응답.
  • 리버스 프록시 서버: 클라이언트 요청을 다른 서버로 전달하고 응답을 대신 반환.
  • 로드 밸런서: 여러 서버에 요청을 분산하여 트래픽을 조절.
  • 캐시 서버: 정적 콘텐츠를 캐시하여 빠른 응답 제공.

리버스 프록시란?

요약: 클라이언트 요청을 받아서 백엔드 서버에 전달하고, 결과를 대신 응답해주는 중계자 역할.

리버스 프록시는 서버 앞단에 위치하여 클라이언트 요청을 내부 서버에 대신 전달합니다. 이를 통해 보안, 부하 분산, 서버 은닉, SSL 종료 등의 이점을 제공합니다.

리버스 프록시와 포워드 프록시의 차이

구분포워드 프록시리버스 프록시
위치클라이언트 앞서버 앞
사용 목적사용자의 요청 은닉, 우회 접속서버 보호, 요청 라우팅
예시회사 내부 프록시 서버Nginx 리버스 프록시

Nginx 리버스 프록시 예제

예를 들어, 클라이언트가 https://mydomain.com/api에 요청을 보내면, Nginx는 내부의 http://localhost:3000/api로 요청을 전달하고, 결과를 클라이언트에게 돌려줍니다.

server {
    listen 80;
    server_name mydomain.com;

    location /api {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

설명

  • proxy_pass: 실제 요청을 전달할 백엔드 주소.
  • proxy_set_header: 원래 요청자의 IP 주소, Host 정보를 백엔드에 전달.
  • location /api: /api로 시작하는 요청만 프록시 적용.

리버스 프록시의 주요 활용 사례

보안 강화: 실제 서버 IP를 노출하지 않음. 방화벽 설정도 프록시 서버 단에서 처리 가능.

서버 분리 및 마이크로서비스 구성: 프론트엔드, 백엔드, 파일 서버를 하나의 도메인에서 각각 다르게 라우팅 가능.

SSL 종료 처리: HTTPS 처리를 프록시 서버에서 담당하고 내부 서버는 HTTP로 유지.

로드 밸런싱: 여러 백엔드 서버로 요청 분산.

upstream backend_servers {
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
}

server {
    listen 80;

    location / {
        proxy_pass http://backend_servers;
    }
}

주의할 점

⚠️ CORS 문제: 프론트엔드가 다른 도메인의 API를 호출할 경우, CORS 에러 발생 가능 → 백엔드 또는 Nginx에서 Access-Control-Allow-Origin 설정 필요.

⚠️ 헤더 누락: proxy_set_header를 명시하지 않으면 백엔드 서버가 클라이언트 IP를 알 수 없음.

⚠️ 보안 설정: 프록시 서버가 외부에 노출되므로 적절한 보안 정책이 필요함 (SSL, 방화벽, 인증 등).


마무리

Nginx는 단순한 웹 서버를 넘어서 현대 웹 아키텍처의 핵심 중계자 역할을 수행합니다. 특히 리버스 프록시 기능은 서버 분리 구조, 트래픽 관리, 보안 측면에서 필수 요소입니다.

💡 마이크로서비스 환경, SSR 서버 구성, HTTPS 처리 등에서 Nginx 리버스 프록시는 거의 필수로 사용됩니다.

profile
FrontEnd Developer

0개의 댓글