1492 words
7 minutes
Nginx란, 웹서버 개념이해
2025-06-22

Nginx란? 웹서버 개념이해#

그 놈의 엔진엑스가 뭔가?
우리가 쓰는 사이트는 어떻게 돌아가는가?
먼저 클라이언트=브라우저가 필요하다.

또 서버가 필요하다.
백엔드, api 보내면 그에 맞는 응답 보내주는 친구.

브라우저에겐 웹서버가 필요해~#

그런데 여기에 웹서버라는게 또 있다.
웹도 아니고 서버도 아니고 웹서버는 뭔가?

프론트엔드를 배포하면 최종적으로 html, css, js인 정적 파일들이 나온다.
이것들은 어떻게 서버에 올라갈까? 어떻게 서버와 통신할까?

html, css는 진짜 정적이니까 고대로 올라간다치고
js 돌아가면? 실시간으로 소통…까진 아니여도 (실시간할라면 소켓이나 SSE…)
동적인 처리가 필요하다. 어떻게 하지?

웹서버가 이런 정적 파일을 서빙해준다. html, css, js, 이미지 등…
⚠️ js도 정적 파일인가요?

  • 넹 코드니까…돌아가는 거 말고 그냥 js 파일이요
  • js는 그럼 어디서 돌아가냐. 브라우저에서 돌아간다.

    웹서버가 js 파일을 브라우저에게 정적파일로 전달하고, 브라우저에서 실행한다~

웹서버는 http 프로토콜을 사용해 클라이언트와 통신한다.
웹서버는 대표적으로 Nginx, Apache가 있다.
⚠️ 왜 http?

  • http는 hypertext transfer protocol이다.
  • 웹에서 데이터를 주고받는 규칙=프로토콜이다. 어떻게 요청할지…어떻게 응답할지…
  • 브라우저와 서버가 통신하려면 이 프토로콜을 따라야 한다.

웹서버와 WAS 모두 웹에서 서버와 통신하는 과정이므로 HTTP 프로토콜을 따른다.

NOTE

웹서버는 정적 파일 서빙 + 리버스 프록시 + 로드 밸런싱 역할을 한다. Nginx, Apache가 대표적이다.


⚠️ 리버스 프록시란?#

⚠️리버스 프록시란?

웹서버 앞에 위치해 브라우저 요청을 웹서버에 전달한다.

  • 프록시 서버란 서버와 클라이언트 사이에 중개자처럼 위치해서 있는 서버인데 이걸 포워드 프록시라고 하자.
  • 리버스 프록시와의 차이는 무엇인가?
    • 일단 공통점은 다른 브라우저와 서버가 직접적으로 통신하지 못하게 한다.
    • 포워드는 브라우저 앞에 위치
    • 리버스는 서버 앞에 위치.
  • 이게 뭐가 다름..?
    • 포워드는 브라우저의 대리인으로 브라우저의 요청을 대신한다. 즉 내 정보를 숨김
    • 리버스는 서버의 대리인으로 실제 서버가 아닌 리버스 프록시가 응답. 서버를 숨긴다.
  • 요약
    ” 클라이언트 - 프록시 - 서버 ”
    이 3자 관계에서 포워드는 클라이언트 대리인, 리버스는 서버 대리인
    공통 효과 : 기본적으로 캐싱.
    포워드 효과? > 클라이언트 정보를 숨길 수 있다. 누가 접속하는지 숨기기 가능 (일종의 VPN 효과?)
    리버스 효과? > 어떤 서버가 응답하는지 숨긴다.
    - 부하 분산, 로드 밸런싱 효과
    - 서버 보호, 보안
    - SSL 리소스 절감 : 리버스 프록시에만 SSL 인증서 존재, 서버에서는 리버스 거쳐서 해독된 데이터 받음. 서버 각각에서 전부 SSL 인증서 있고 처리하면 비용 그 배만큼 증가함
    - 결국 서버가 모두 통과하는 창구에서 인증서 관리에서 관리 간소화 + CPU 연산 비용 절감
    - 포워드도 창구 역할 아닌가? 포워드도 SSL 효과 있음. 근데 대규모 서버 트래픽 처리 관점에서 SSL 효과는 리버스가 훨씬 크다.

브라우저에겐 WAS도 필요해~#

WAS는??? 웹서버하면 WAS도 같이 나오는데
웹 어플리케이션 서버다. 웹서버 줄임말도 아니고 이건 뭐지

클라이언트 요청에 대해 동적인 처리를 담당한다. 동적인 부분!

  • 동적인 부분이 뭐냐. 서버에서의 비즈니스 로직을 동적이라고 한다.
    • API 엔드포인트 제공, 회원가입 로그인 검증 등 비즈니스 로직…
  • 일종의 서버사이드 부분.

대표적으로 톰캣이 있다.
WAS에서 회원가입이나 로그인 등 로직을 처리한다.

Nginx#

대표적인 웹서버. 웹서버 소프트웨어다. 서버에 설치해서 실행된다.
리버스 프록시 역할을 해서 좋음. 리버스 프록시란?

  • API 요청을 백엔드로 전달해줌.

엔진엑스 왜쓰냐?

  • 리버스 프록시, 로드 밸런싱, SSL 처리, 캐싱 등의 장점이 있다.

프로젝트 하다보면 보안 때문에 http 쓸 수는 없으니…https를 쓴다.
이 때 ssl 처리 일일히 하려면 에바다.
엔진엑스 많이 쓴다.

전체 시나리오#

백엔드 개발 다했다.

  1. 스프링에서 톰캣=WAS 실행
    1. 최신은 스프링 부트 배포하면 jar 파일 안에 톰캣 포함됨
  2. 웹서버 > 리버스 프록시로 톰캣과 연결
    1. 웹서버에 SSL 인증서 있음
  3. 브라우저 > 웹서버가 받아서 톰캣으로 전달
브라우저 → Nginx → 톰캣(WAS) → DB
       ←        ←           ←

구체적으로:
- 정적 파일 요청 → Nginx가 직접 응답
- API 요청 → Nginx가 톰캣으로 프록시
# docker-compose.yml 예시
nginx:          # 리버스 프록시 + SSL
  - frontend    # 정적 파일 (실제로는 nginx에 포함되기도)
  - backend     # Spring Boot (내장 톰캣)
  - database    # MySQL/PostgreSQL
Nginx란, 웹서버 개념이해
softourr.github.io/nginx란-웹서버-개념이해.md
Author
softourr
Published at
2025-06-22